web-dev-qa-db-ja.com

slf4jでカスタムロガーを実装する

すべてのログエントリをデータベースに記録するカスタムロガーを実装したい。現在、私のアプリはこの方法でログを記録しています(slf4jおよびlog4jバインディング):

private static final Logger logger = LoggerFactory.getLogger( MyClass.class );

どうすればいいのかわかりません。私のアイデアは、 org.slf4j.Logger Interface を実装することにより、カスタムロギングバインディングを実装することです。

次のステップは何ですか?私の目標は、現在のコードを変更しないことです

私が検討したリンク:

33

かなり簡単なはずです。独自のLoggerLoggerFactoryを実装する必要があります。既存のコードをまったく変更する必要はありません。

その後、ロガーファクトリとクラス名を返すためにStaticLoggerBinderを実装する必要があります。 slf4j Zipファイルをダウンロードすると、すべての実装のソースも取得できます。例として、slf4j-log4jのStaticLoggerBinderをご覧ください。

詳細については、このリンクを参照してください: http://www.slf4j.org/faq.html#slf4j_compatible

32
chris

独自のロギング実装を作成する必要はありません。ロギングフレームワークを logback に切り替えてみませんか? Lobackはデータベースへのロギングをネイティブでサポートしています。 SLF4J APIを両方使用すると、コードは変更されません。

ch.qos.logback.classic.db.DBAppender を見てください。デフォルトのテーブルレイアウトがニーズに合わない場合は、 ch.qos.logback.classic.db.names.DBNameResolver を実装して、テーブル名とコロム名をカスタマイズできます。

5
Matthias B