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 サイトの他の関連記事を参照してください。