Java Loggingフレームワークのマーカーとは何ですか?それらを使用する理由は何ですか?


110

読んだときに初めてマーカーについて聞いた:

http://slf4j.org/faq.html

Loggerオブジェクトの使用可能なメソッドを確認します。

そして見つかったインターフェース:

私が得るより詳細な情報:

しかし、まだ混乱しています... それらをどのように使用するではなく、理由を尋ねるので注意してください。これは、以下の複製ではありません。

UPDATEマーカーを使用する場合、XMLまたは.propertyファイルで構成を行う代わりにカスタムJavaコードを記述する必要があるようです...

更新2 http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluatorから

Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN");
logger.error(notifyAdmin,
  "This is a serious an error requiring the admin's attention",
   new Exception("Just testing"));

マーカーを使用するには、SLF4Jが提供するマーカーAPIを使用する必要があります。「カスタムJavaコード」とはどういう意味ですか?
Ceki 2013年

@Ceki Logger.warn(Marker、msg)だけを使用しても、フィルター用のカスタムクラスを作成して登録するまで、何のメリットもないようです... logback.xmlの単純な構文には、Markerを操作する特別な機能はありません(%markerでそれらを印刷してください)
ギヴェンコア2013年

1
logback.qos.ch/manual/appenders.html#OnMarkerEvaluatorに示されているものの「特別な」とは何ですか?
Ceki 2013年

@Cekiポイントありがとう!マーカーを使用できる場所は1つだけですか?
ジヴェンコア2013年

1
@Ceki Elasticsearchを使用しているので、特別なイベントをマークする方法です。事前定義されたマーカーを再利用のために専用のクラスに保持します。grepテキストログだけを使用する場合は明らかではありませんでした。
ジヴェンコア

回答:


117

これは、「SLF4J / Logbackでマーカーを使用するためのベストプラクティス」の質問に対する私の回答の再ハッシュバージョンです。です。

マーカーを使用して、1つのログステートメントに色を付けたり、マークを付けたりできます。これらの色、つまりマーカーで何をするかは完全にあなた次第です。ただし、マーカーの使用には2つのパターンが共通しているようです。

  1. トリガー:一部のアペンダーは、特定のマーカーの存在下でアクションを実行するように指示される可能性があります。たとえば、ログレベルに関係なくSMTPAppender、ロギングイベントがNOTIFY_ADMINマーカーでマークされるたびに電子メールを送信するように設定できます。ログバックのドキュメントのマーカーベースのトリガーをご覧ください。ログレベルとマーカーを組み合わせてトリガーすることもできます。

  2. フィルタリング:マーカーは、特定の貴重なログステートメントを目立たせるのに非常に役立ちます。たとえば、(さまざまな複数のクラスファイル内の)永続性関連のすべてのログに「DB」という色を付けたり、色を付けたりできます。次に、「DB」をフィルタリングできます。DBでマークされたログステートメントを除き、ロギングを無効にします。詳細については、Logbackドキュメントのフィルターに関する章を参照してください(MarkerFilterを検索)。マーカーのフィルタリングは、ログバックだけでなく、ログ分析ツールでも実行できることに注意してください。

マーカーが登場する前は、同様の動作を実現するために、1)カスタムレベルを使用する2)変更されたロガー名を使用するという選択肢がありました。SLF4J APIは現在、カスタムレベルをサポートしていません。オプション2に関しては、1つまたは2つのロガーを変更する必要がある場合、ロガー名に接尾辞(または接頭辞)を付けることができます。関連する構成ファイルが管理できなくなるため、3つ以上のロガーを「サブクラス化」する必要があるとすぐに、このアプローチは非現実的になります。

単一のマーカーがすでに非常に役立つ場合がありますが、SLF4Jの次のバージョン、つまりバージョン2.0では、ログステートメントごとに複数のマーカーを使用できます。


1
SiftingAppenderで弁別として使用することもできますstackoverflow.com/a/30552012/1012497
nikli
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.