4

Logback では、次のように構成できます。 1 ログファイルのサイズが 50MB 程度に達したら、ファイルをローテーションして圧縮します。それで、別のスレッドで圧縮を行うのだろうか、パフォーマンスの問題はありますか?

4

1 に答える 1

6

logback-1.0.3を調査しました。ユースケースを考えてみましょう:

  1. コードでLogger#error(String)を呼び出します。
  2. ロガー構成に従ってフィルタリングされたデータ。
  3. buildLoggingEventAndAppendおよびcallApendersの後にAppendersを呼び出します
  4. あなたの場合、OutputStreamAppenderでappendメソッドを呼び出します。
  5. トリガーベースのRollingFileAppenderは、イベントがトリガーされたときに ロールオーバーを呼び出します。
  6. ロールオーバーメソッドでは、適切なcompressメソッドが呼び出されます。

ご覧のとおり、すべてのものがログに記録され、ログに記録されたデータと同じスレッドに圧縮されます。したがって、タイムクリティカルなスレッドにログインしないでください。

個人的には、同じスレッドにログインすることは大多数のアプリケーションにとって重要ではないと思いますが、環境、パフォーマンス要件などに大きく依存します。

データを非同期でログに記録する場合は、AsyncAppenderを使用できます。この場合、圧縮も別のスレッドで行われます。

于 2013-02-18T07:38:29.733 に答える