[解決済み] SLF4J/Logbackでマーカーを使用するためのベストプラクティス
質問
私たちのプロジェクトで SLF4J+Logback の組み合わせをしばらく使用しており、かなり満足していますが、私たちのロギング戦略はかなり単純で、単純なクラスベースのロガーと MDC やマーカーなどの派手なものを使用していません。
私が知りたいのは、コミュニティの誰かが実際にこれらの機能を使用しているかどうか、そして、それらがどのようにロギング/フィルタリングを改善するために使用されているかということです。
私は特に、どこで、なぜ、どのように
[1]
マーカーをログに記録することです。たとえば、クラスが複数の関心事を処理する間、ログ ステートメントを区別するためにタスク/関心事特有のマーカーを使用することができます。
ロギングでマーカーを作成し使用するためのベストプラクティス、規約または戦略は何でしょうか。
更新しました。 私が思うに、私が本当に求めているものは、あまり なぜ を使うか、ではなく、むしろ どのように の部分です。マーカーを命名する良い方法はあるのでしょうか (たとえば、スペースを含むプレーンテキストを使用するか、ダッシュ/アンダースコア/句読点で区切られたキーワード形式の名前を使用するか)、標準の名前とビジネス機能に基づいた名前のプールがあるのでしょうか?質問はおそらく自分で解決できますが、これらの機能を体系的に使用し、開発者のチームにそれらを導入したい場合、何らかの正式なガイドラインのセットを持つことは理にかなっています...。
[1] - どのようにすればよいかを問うことで を使う マーカーをどのように使用するかを尋ねているのではなく、マーカーを一貫して使用するためのロギングをどのように設定するかという、より一般的なレベルを尋ねているのです。
どのように解決するのですか?
まず、@darioo さんのおっしゃる通りです。
- MDC は、複数のイベントを少数の "エンティティ" に関連付けるために使用されます。
- [マーカー]は、通常のイベントからフィルタリングさせたい特別なイベントに使用します。
MDC を使いたいということですね。マーカーは、quot;slicing" というよりも、quot;special" イベントを強調する、いわばフィルタリングするためのものです。たとえば、特定のユーザーに基づいてスライスし、予期せぬ例外が発生した場合にフィルタリングすることができます。この場合 ユーザー MDC ディメンジョンと UnexpectedException マーカーを使用しています。
しかし、これはどうやら、あなたが考えていた質問には対応していないようです。あなたはむしろ、一貫してマーカーを使用してどのようにログを設定するかという、より一般的なレベルについて言及しているのです。
MDC は スライスとダイシング であり、マーカは フィルタリング . これらの活動は、テスト中や本番中に行われる . そのため、テストや本番が近づいたときに、ログデータをどの次元でスライスするのが便利か、どのケースに対してフィルタリングするのが便利かを決める必要があります。 各次元には MDC 次元が含まれます。各ケースはマーカーを取得します。 というように単純です。
開発者はここで何も決める必要はないのです。 一人の人間、あるいはチームが決定すべきです。 設計時に どのような種類のスライス、ダイシング、およびフィルタリングがサポートされる必要があるか。これは、どのような種類の分析タスクを実行するよう求められるかを想像することによって知らされるべきです。
この同じ人またはチームが命名規則を決定する必要があります。
それは完全に任意です。 . 美観に優れたものを選びましょう。 自己記述的 (最も重要)で、後から追加したものと衝突しない程度に具体的なものを選んでください。ハイフン vs. アンダースコアは非常に些細なことで、驚くほど重要ではありませんが、ESL従業員がアンダースコアを読むのに混乱が少ないかもしれないことに注意してください (少なくともキャメルケースと比較して)。
方針を決めるということに関しては、これは単に 特定のマーカーまたは MDC ディメンジョンをどのような場合に使用するかを定義することです。 . これは厳重に(一元的に、意図的に)管理しますが、ディメンションとマーカーのセットが目下のタスクに対して不十分であると感じた場合は、開発者からのフィードバックを許可します。必要に応じて、ディメンジョンや属性を修正/追加してください。
理解する この方針は、ほぼ必然的にプロジェクト固有のものになります。 . すべてのプロジェクトに同じ種類のログ解析が必要なわけではありません。いくつかの悪夢のようなシナリオを思い浮かべてください。そして、そのシナリオでログをどのように分析できるようにしたいかを想像してください。おそらく、どのメッセージがどのコンテキストに属しているか、どの状態がどの時間であるかを追跡するために、複雑なスクリプトを書く必要はないでしょう?そのような情報が必要であれば、ディメンションおよびマーカーとしてエンコードし、何か問題が発生したときに手間を省くことができます。
関連
-
java の例外が発生しました java
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
javaで非静的な解を静的な参照にすることができない
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
Java コンパイルエラー - スレッド "main" で例外 java.lang.Error: 未解決のコンパイル問題です。
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
[解決済み】なぜjava.util.loggingを使用しないのですか?
-
[解決済み] Java Loggingフレームワークにおけるマーカーとは何か、マーカーを使用する理由とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
javaの模造品QQ WeChatのチャットルーム
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
Methodのinvokeメソッド実装のJavaリフレクション
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。
-
[解決済み] Java Loggingフレームワークにおけるマーカーとは何か、マーカーを使用する理由とは?