6



I am working on a multithreaded application. I am already using Log4j to log statements to files.
I have been recently looking into the possibility of logging to a Mysql database.

The logging component has to be reliable under a heavy load and has to be thread safe.
I heard of SFL4J. My understanding of SLF4J is that is just a facade or abstraction layer.

  • I was wondering if SLF4J was a good database logging solution to use in a multithreaded application?

  • And in the case of a heavy load, would it be a good idea to add a layer (like a buffer or a queue) and let the threads log to it instead of calling the logging thread directly (The logging thread would send the statements found in the queue one by one to the database)?

Any tips, best practices or code example would greatly be appreciated,
Regards,

4

1 に答える 1

3

SFL4J は単なるファサードであることは間違いありません。これにより、ライブラリとフレームワークの作成者は、ファサードを介してログを記録し、アプリケーションに独自のログ フレームワークを指定させることができます。アプリケーション レベルでは、SLF4J を使用する説得力のある理由はありません。log4j を直接使用することもできます。唯一の利点は、変更の少ない将来の日付で logback に切り替えることができることです。どのロギング実装を使用するかが不明な場合を除き、それだけでは説得力がありません。その場合は、比較テストで実装を交換できるように抽象化レイヤーを使用できます。

SLF4j を使用しても同時実行性には影響しません。実際のロガー用に別のアペンダーを検討する (または独自にロールする) ことをお勧めしますが、SLF4J の呼び出し方法には影響しません。同時実行性が影響を受ける唯一の場所はアペンダーです。

于 2012-10-31T13:43:22.773 に答える