Log4j2には、LMAX Disruptorに基づく非同期ロガーがあります。これは本質的にロックフリーのキューで、他のロギングライブラリと比較して大きなパフォーマンス上の利点をもたらします。 recent benchmark results hereを参照してください。
Log4j2にはガーベッジフリーなので、ガベージコレクタに負荷をかけません。結果として、アプリケーションの一時的なオブジェクトが古いgenに高速に昇格されず、full gcの一時停止が少なくなります。しかし、それは持っているだけでいいです。
ロギングファサードの場合、Commons Loggingは一般にレガシーテクノロジとみなされ、回避する理由はいくつかあります。 SLF4Jは普及しているようですが、単にLog4j2 APIを使用するだけで何も問題はありません(Log4j 1.2とは異なり、実際には別のlog4j-apiモジュールがあります)。
Spring @Asyncは非同期ログ用ではありません。バックグラウンドスレッドで実行したい粗い粒度のタスクに適しています。各ロギングステートメントのSpringのTaskExecutorを経由すると、エグゼキュータキューが圧倒される可能性があります(私が知る限りロックフリーではありません)。また、コードを読みにくくなる可能性があります。
パフォーマンスが向上した非同期ロガーと呼ばれるものがあります。これは主に大規模な分散アプリケーションを使用している場合に使用されます。 –
ログはバッファリングすることもできます。つまり、ログを書き込む別のスレッドに送信することはバッファに送信することと同じです。少なくともバッファは別のスレッドを持たないでしょう。あなたが私に信じていないかどうか聞いてみると、あなたが求めていることをすることに意味がない。 – Snickers3192