Java プロジェクトにログインするための log4j の実装である slf4j を使用しています。現在、FILE と CONSOLE の 2 つのアペンダーを使用しています。
以下の2点が知りたいです。
複数のアペンダ (この場合は CONSOLE と FILE) を使用すると、ロギングでパフォーマンスの問題が発生しますか?
CONSOLE アペンダと FILE アペンダの両方を使用したい場合は?
CONSOLE と FILE に書き込む場合、2 つの異なるストリームに書き込みます。マルチスレッド システムでは、パフォーマンスへの影響はそれほど大きくありませんが、ボリュームが大きい場合は依然として明らかです。
log4Jのマニュアルより
The typical cost of actually logging is about 100 to 300 microseconds.
これには、ステートメントの作成と書き込みが含まれますが、頻繁にログを記録している場合、書き込みにかかる時間は明らかです。
しかし、もっと基本的な質問をする必要があります -なぜログに記録しているのか?
ログはどこにも保存されないため、最初の部分では CONSOLE は役に立ちません。ログが重く、すべてのログが CONSOLE に送信される場合、ログの量によってコンソールの出力が判読不能になるため、目的 2 も無効になります。
IMO lessのようなものを使用してファイルからログを読み取る方がはるかに理にかなっています。一般的な慣例として、ファイルにログを記録し、必要に応じてコンソールにエラー メッセージのみを記録します。いくつかのエラー メッセージは何か問題が発生したことを示しているためです。一方、コンソールの何百ものログ行は、コンソールが非常に急速に更新されている場合、それは意味があります。
TL-DR
コストはそれほど大きくないかもしれませんが、追加の利点が得られないのに、なぜ追加コストが発生するのでしょうか?
ログ 4j のパフォーマンスに関するこれらのリンクを参照してください。 log4j-パフォーマンス log4j-減少したアプリケーション パフォーマンス log4j アペンダー