すべてのログエントリをデータベースに記録するカスタムロガーを実装したい。現在、私のアプリはこの方法でログを記録しています(slf4jおよびlog4jバインディング):
private static final Logger logger = LoggerFactory.getLogger( MyClass.class );
どうすればいいのかわかりません。私のアイデアは、 org.slf4j.Logger Interface を実装することにより、カスタムロギングバインディングを実装することです。
次のステップは何ですか?私の目標は、現在のコードを変更しないことです
私が検討したリンク:
かなり簡単なはずです。独自のLogger
とLoggerFactory
を実装する必要があります。既存のコードをまったく変更する必要はありません。
その後、ロガーファクトリとクラス名を返すためにStaticLoggerBinder
を実装する必要があります。 slf4j Zipファイルをダウンロードすると、すべての実装のソースも取得できます。例として、slf4j-log4jのStaticLoggerBinderをご覧ください。
詳細については、このリンクを参照してください: http://www.slf4j.org/faq.html#slf4j_compatible
独自のロギング実装を作成する必要はありません。ロギングフレームワークを logback に切り替えてみませんか? Lobackはデータベースへのロギングをネイティブでサポートしています。 SLF4J APIを両方使用すると、コードは変更されません。
ch.qos.logback.classic.db.DBAppender を見てください。デフォルトのテーブルレイアウトがニーズに合わない場合は、 ch.qos.logback.classic.db.names.DBNameResolver を実装して、テーブル名とコロム名をカスタマイズできます。