ホームページ > Java > Spring Boot ロギング - トレースログプレフィックスを削除する方法

Spring Boot ロギング - トレースログプレフィックスを削除する方法

PHPz
リリース: 2024-02-09 21:03:08
転載
1165 人が閲覧しました

php エディタ Zimo は、Spring Boot ログに関する関連コンテンツを提供します。 Spring Boot をアプリケーション開発に使用する場合、ログの可読性と見た目に影響を与えるログのプレフィックスを追跡するという問題がよく発生します。この記事では、トレース ログのプレフィックスを削除してログを明確にする方法を説明します。初心者でも経験豊富な開発者でも、この記事は役に立ちます。次に、この問題の解決策を見てみましょう。

質問内容

1.message log
{"@timestamp":"2023-12-18t22:36:22.449z","severity":"info","service":"mopservice-jcr-svc","traceid":"afa32548086d2994","spanid":"afa32548086d2994","user-id":"","iv-user":"","customer-number":"","exportable":"","pid":"1","thread":"http-nio-8443-exec-1","class":"o.a.c.m.jmx.instrumentationmanagerimpl","message":"registering mbean org.apache.cxf:bus.id=cxf619002012,type=performance.counter.server,service=\"{http://www.canadapost.ca/ws/payment/methodsofpayment/soap/2017/10}methodsofpaymentporttypeservice\",port=\"methodsofpaymentporttypeport\",operation=\"getallowedmethodsofpayment\": org.apache.cxf.management.counters.responsetimecounter@99c7fd6"}
ログイン後にコピー
リーリー

これらは、スプリングブート アプリケーションからのアプリケーションのログです。最初のログには実際のメッセージがあり、2 番目のログはメッセージ内にトレース情報が含まれる単なるトレース ログです。

メッセージがある限り、最初の行は問題ありません。ただし、2 行目では、メッセージ内のトレース ログ ({ taceid で始まる) を出力したいだけです。私のログバック構成を以下に投稿します

リーリー

これは、stdout パターンをカスタマイズする logback-spring XML です。 %message では、トレース情報を json 形式で取得し、「net.logstash.logback.encoder.loggingeventcompositejsonencoder」クラスが、メッセージの各サブフィールドにバックスラッシュを含む json に変換しています。

したがって、ここでの要件は、トレース メッセージのプレフィックスを削除して、json である %message のみが出力されるようにすることです。

また、すべてのサブフィールドにバックスラッシュが挿入されないように、json エンコーダーも削除します。

コンパイル時にエラーを発生させるクラスを削除するのに飽きて、コア エンコーダを提供しようとしましたが、これもコンパイル時にログバック構成エラーを発生させました。

c.c.s.config.sleuth.loggingspanreporter クラスによって生成されたログのすべてのプレフィックスを削除する方法が見つかりませんでした。

loggingspanreporter にログ行がある場合にのみトレースを出力し、json エンコーダー クラスを削除する方法を提案してください。私が必要なのは、kibana がサブフィールドに解析するための json 形式だけです。

解決策

2.trace log - message field contains trace information without any actual message.
{"@timestamp":"2023-12-18t22:36:21.076z","severity":"info","service":"mopservice-jcr-svc","traceid":"afa32548086d2994","spanid":"-5697962974162517179","user-id":"","iv-user":"","customer-number":"","exportable":"","pid":"1","thread":"http-nio-8443-exec-1","class":"c.c.s.config.sleuth.loggingspanreporter","message":"{\"traceid\":\"afa32548086d2994\",\"parentid\":\"57583fd122326bb7\",\"id\":\"b0ecc4dd35b70345\",\"kind\":\"client\",\"name\":\"micrometer://timer:get-allowed-methods-of-payment-time?action=start\",\"timestamp\":1702938981069686,\"duration\":6630,\"localendpoint\":{\"servicename\":\"micrometer://timer:get-allowed-methods-of-payment-time?action=start\",\"ipv4\":\"10.129.6.120\"},\"tags\":{\"camel.client.endpoint.url\":\"micrometer://timer:get-allowed-methods-of-payment-time?action=start\",\"camel.client.exchange.id\":\"cbe3d7cc933d03a-0000000000000001\",\"camel.client.exchange.pattern\":\"inout\"}}"}
ログイン後にコピー

これでスキーマの問題は解決し、kibana は json を解析してフィールドにマッピングすることができました。このアペンダーは、sleuth.loggingspanreporter クラスによって生成されたログをターゲットとしています。 そしてパターンを適用し、%message 内のトレースのみを出力します。

以上がSpring Boot ロギング - トレースログプレフィックスを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート