5

複数のマシンからのログデータを単一のDBに結合するプロジェクトに取り組んでいます。

シナリオをログに記録する必要があります。

  1. 例外の通常のロギングと開発者のロギング。たとえば、開発者はレベルをデバッグに変えます。
  2. 「監査」ログ。特別なシナリオは、別の構造を持つ別のDBに記録する必要があります。

ログバックとJMSを使用しています。「クライアント」はJMSキューにログを記録し、「サーバー」はフォームキューを読み取り、DBに書き込みます。

2種類のログを区別する簡単な方法を探しています。私がやりたいのは、別のログレベル、たとえば「監査」を作成することです。これを「サーバー」側で確認し、特別なオブジェクト構造を作成して、別のDBに書き込むことができます。

ただし、これはログバックでは不可能です。私はマーカーを検討しましたが、それは開発者が明示的にマーカーを適用する必要があることを意味します。私の他のオプションは、2つの別々のロガーを用意し、開発者が正しいロガーを取得することです。それは私が望むほどエレガントではありません。

開発者には、デバッグにはlog.debug、エラーにはlog.error、監査にはlog.auditを実行してもらいたいのですが。

何かアドバイスはありますか、誰かが同様の問題を解決しなければなりませんでしたか?

4

1 に答える 1

3

まず第一に、DBAppenderを使用してデータベースに直接ログを記録し、JMS レイヤーをスキップしないのはなぜでしょうか? Logback は、パフォーマンスが重要な場合に非同期でログを記録する機能を提供します。

フィルタリングに関しては、個別のロガーがこれを行う最も簡単でクリーンな方法です (そして、単純にロガー/カテゴリでフィルタリングします)。このアプローチは、これらが特別なログであり、通常のアプリケーション デバッグではないという事実を強調しています。この監査ログを何らかのサービス/側面にラップして、ビジネス ロジックから分離することも検討します。

本当に既存のロガーを再利用したい場合は、Logbackフィルターを使用して、実行時にイベントをディスパッチおよびフィルター処理できます。

于 2011-03-11T12:44:41.767 に答える