FAQ

Prev Next

Classic/VPC環境で利用できます。

ガイドを読む前に、よくある質問への回答をチェックすると不明な点をスピーディーに解消できます。以下のよくある質問から答えが得られなかった場合、ご利用ガイドで必要な内容をご確認ください。Effective Log Search & Analytics 2.0 FAQは、以下のようなテーマで構成されています。

Android SDK v1/v2/v3
iOS SDK
log4j/logback/log4j2 SDK v2

Android SDK v1/v2/v3

Android SDK v1/v2/v3に関するよくある質問と回答は、次の通りです。

Q. クラッシュ発生時にファイルに保存したログをすべて Effective Log Search & Analytics 2.0サーバに転送する方法は何ですか?

A. クラッシュコールバック関数の中から finishSendNeloCrash() 関数で NeloLog.flush()を呼び出してください。クラッシュの発生時に、ファイルとキューにあるすべてのログをサーバに転送します。

Q. 転送していない New User install App ログが転送されます。

A. New User install App ログは、アプリケーションが最初インストールされた時点で1回のみ転送されます。

Q. proguardの適用時の注意事項は何ですか?

A. proguardの適用時に ThriftConnectorHttpsConnectorも難読化すると、当該クラスが見つからないのでログ転送に失敗します。この蔵明日は proguardの適用時に除外処理してください。

Q. 「Could not find class 'com.nhncorp.nelo2.android.HttpsConnector', referenced from method com.nhncorp.nelo2.android.Nelo2ConnectorFactory.getConnector」エラーが発生します。

A. SDKインストール時に HTTPSプロトコルの使用に必要なファイルを追加しない場合、発生する警告メッセージです。Thriftプロトコルのみ使用する場合、無視してください。

iOS SDK

iOS SDKに関するよくある質問と回答は、次の通りです。

Q. bitcode enabledアプリの dSYMs(Symbol)は、どこでダウンロードできますか?

A. Xcode、または iTunes Connectでダウンロードできます。

  • iTunes Connectで dSYM ファイルをダウンロードするには、My Apps メニューのアプリのビルドリストからバージョンを選択した後、Download dSYM をクリックしてください。

log4j/logback/log4j2 SDK v2

log4j/logback/log4j2 SDK v2に関するよくある質問と回答は、次の通りです。

共通

log4j/logback/log4j2に共通して該当する質問と回答は、次の通りです。

Q. バッチプログラム、または簡単なテストプログラムで、AsyncAppenderを使用する方法は何ですか?

A. プログラムの最後に、以下のように何秒間待機するコードを追加してください。

try {
    Thread.sleep(3000L);
} catch (InterruptedException ignore){}

AsyncAppenderは、ログを記録する別途のデーモンスレッドで非同期でログを転送します。Javaのバッチプログラムでは、メインスレッドがすぐに終了するので、log4jAsyncAppenderのデーモンスレッドを作成してログを転送する前に、バッチアプリケーションと JVMを終了します。そのため、プログラムの最後に待機するコードを追加してすべてのログを転送した後、プログラムを終了するようにします。

Q. Java stack traceを log4j/logbackに含める方法は何ですか?

A. Action/BO/DAO/Java batch programなどで log4j/logbackを利用してスタックドレース(stack trace)を出力するには、log.error(e.getMessage(), e); の形式で使用してください。

  • SLF4J Loggerはメソッドの引数として Throwableのみ取得するロギングメソッドはサポートしません。
    String[] aa = null;
    try {
        aa[0] = "111";
    } catch (NullPointerException e) {
    //	log.error(e); //SLF4Jではサポートしないメソッド。
        log.error(e.getMessage(), e); ///stacktrace出力
    }
    

Q. log4j/logback/log4j2ロギングによるパフォーマンス低下を最小化する方法は何ですか?

A. log4j.xmllogback.xmllog4j2.xmlの各 logger設定で namelevelを使用してフィルタリングを最大化できます。

  • logger設定で comorgDEBUG レベルに設定すると、loggerで多くの ILoggingEvent(log4j)/ILoggingEvent(logback)/ILoggingEvent(log4j2)が不要に作成され、パフォーマンスが低下します。
  • nelo log4j appenderで Thresholdが ERRORに設定されているので、実際のログ転送は行われませが、まず loggerで LoggingEventを作成して appenderに送ります。
  • log4jの場合の例
    • パフォーマンスが低下する設定(開発用のみで使用)
      <!-- Logger -->
      <logger name="com" additivity="false">
          <level value="debug"/>
          <appender-ref ref="STDOUT" />
          <appender-ref ref="nelo-log4j" />
      </logger>
      
      <!-- Logger -->
      <logger name="org" additivity="false">
          <level value="debug"/>
          <appender-ref ref="STDOUT" />
          <appender-ref ref="nelo-log4j" />
      </logger>
      
      <!-- Root Logger -->
      <root level="warn">
          <appender-ref ref="STDOUT" />
          <appender-ref ref="nelo-log4j" />
      </root>
      
    • パフォーマンスを検討した設定(運用向けに使用)
      <!-- Logger -->
      <logger name="com" additivity="false">
          <level value="error"/>
          <appender-ref ref="STDOUT" />
          <appender-ref ref="nelo-log4j" />
      </logger>
      
      <!-- Root Logger -->
      <root level="warn">
          <appender-ref ref="STDOUT" />
          <appender-ref ref="nelo-log4j" />
      </root>
      

Q. Thrift bulk転送時にタイムアウト(timeout)が発生します。

A. 収集サーバに正常にログを転送できなかった場合、以下のようなログが表示されます。この場合、xml appender設定で timeout 値を増加させ、 bulkSizeを下げてから1つのパケットに含まれるデータを減らしてください。

[NELO2] sendMessage (1426319665440) sendBulk failed..  Error occur : java.net.SocketTimeoutException: Read timed out

log4j/logback

log4jと logbackに該当する質問と回答は、次の通りです。

Q. WASで使用時に安定的に WASを終了する方法は何ですか?

A. エラーログが転送中の状況で WAS(Tomcatなど)を終了する場合、時折 WASが正常に終了できないことがあります。WASの終了時に LoggerContext インスタンスに対して stop() メソッドを呼び出し、nelo2 java appenderを閉じると安定的に終了できます。

参考

Springでは log4jに対して org.springframework.web.util.Log4jConfigListenerを提供しますが、logbackに対しては Listenerを提供しません。logbackは Nelo2 logback SDK独自の LogbackShutdownListenerを提供します。

logback

logbackに該当する質問と回答は、次の通りです。

Q. httpClientのロギングに関する警告メッセージが表示されます。

A. HTTPプロトコルを使用する場合、アプリケーションの起動時に以下のようなログが発生します。
これは httpClient ライブラリが apache loggingフレームワークを使用するためであり、ここで作成したログは root loggerに残ります。

SLF4J: The following loggers will not work because they were created
SLF4J: during the default configuration phase of the underlying logging system.
SLF4J: See also http://www.slf4j.org/codes.html#substituteLogger
SLF4J: org.apache.http.impl.conn.PoolingClientConnectionManager
SLF4J: org.apache.http.impl.conn.DefaultClientConnectionOperator
SLF4J: org.apache.http.impl.client.DefaultHttpClient