35

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

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

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

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

私が検討したリンク:

4

2 に答える 2

37

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

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

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

于 2010-04-16T14:57:07.503 に答える
7

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

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

于 2013-05-28T07:42:16.027 に答える