Logback では、次のように構成できます。 1 ログファイルのサイズが 50MB 程度に達したら、ファイルをローテーションして圧縮します。それで、別のスレッドで圧縮を行うのだろうか、パフォーマンスの問題はありますか?
質問する
816 次
1 に答える
6
logback-1.0.3を調査しました。ユースケースを考えてみましょう:
- コードでLogger#error(String)を呼び出します。
- ロガー構成に従ってフィルタリングされたデータ。
- buildLoggingEventAndAppendおよびcallApendersの後にAppendersを呼び出します
- あなたの場合、OutputStreamAppenderでappendメソッドを呼び出します。
- トリガーベースのRollingFileAppenderは、イベントがトリガーされたときに ロールオーバーを呼び出します。
- ロールオーバーメソッドでは、適切なcompressメソッドが呼び出されます。
ご覧のとおり、すべてのものがログに記録され、ログに記録されたデータと同じスレッドに圧縮されます。したがって、タイムクリティカルなスレッドにログインしないでください。
個人的には、同じスレッドにログインすることは大多数のアプリケーションにとって重要ではないと思いますが、環境、パフォーマンス要件などに大きく依存します。
データを非同期でログに記録する場合は、AsyncAppenderを使用できます。この場合、圧縮も別のスレッドで行われます。
于 2013-02-18T07:38:29.733 に答える