Spring Bootの下で、log4jを使用してLogstashを使用して、src/main/resourcesディレクトリのlog4j.propertiesファイルを追加して、出力ログファイルをカスタマイズしましたが、失敗しました。アプリケーションでロギングパスの構成。オンラインで情報を確認し、Spring Bootはログバックを使用してデフォルトでログを録画すると述べました。多くの試みの後、Log4Jが失敗したため、彼はログバックに変更してレコードに変更し、最終テストが成功しました。
1.スプリングブートログファイルのパスについて質問がありますか?
logging.pathとlogging.fileプロパティは、次のように同時に構成されています。
ロギング:path: /var /logファイル:test.log
Test.logファイルのみがプロジェクトルートパスの下で生成され、指定されたパスの下でログファイルは生成されません(予想されるログパスは:logging.path + logging.file)です。
理由:Spring Bootでは、2つのプロパティのいずれかを構成する必要があります:logging.path and logging.file。同時に構成されている場合は、logging.file属性を使用します。
loggin.pathプロパティが構成されている場合、このパスでspring.logファイルが生成されます。つまり、デフォルトのログファイル名spring.logがこの時点で使用されます。
loggin.fileプロパティが構成されている場合、指定された名前のログファイルが指定されたパスの下に生成されます。デフォルトはプロジェクトの相対パスであり、logging.fileの絶対パスを指定できます。
ロギング:
パス:/var/logs#spring.logファイルを/var/logsディレクトリファイル:/var/logs/test.log#generate test.logファイルを/var/logsディレクトリ
2。Log4jを置き換えるログバックの理由:
インターネットからの抜粋は次のとおりです。
logbackとlog4jは非常に似ています。 Log4Jに精通している場合、LogBackは非常に簡単に慣れることができます。以下は、log4jよりもログバックのいくつかの利点です。
1.ログバックをより速く実装するカーネルが書き換えられ、いくつかのキー実行パスでパフォーマンスが10倍以上改善されます。さらに、ログバックはパフォーマンスを改善するだけでなく、初期メモリもロードします。
2。数年後、数え切れないほどのテストのテストログバックが非常に十分です。 Logbackのテストは完全に異なります。著者の視点では、log4jの代わりにログバックを選択することが重要です。
3。Logback-ClassicはSLF4Jを非常に自然に実装しています。 Logback-ClassicはSLF4Jを実装します。 SLF4Jを使用する場合、LogBack-Classicさえ感じることさえできません。また、Logback-ClassicはSLF4Jを非常に自然に実装しているため、Log4Jなどに切り替えるのは非常に簡単です。別のJARパッケージに提供するだけで問題ありません。SLF4JAPIを介して実装されたコードにタッチする必要はありません。
4.非常に十分な文書、公式ウェブサイトには200ページ以上のドキュメントがあります。
5.構成ファイルを自動的にリロードします。構成ファイルが変更されると、Logback-Classicは構成ファイルを自動的にリロードできます。スキャンプロセスは高速で安全であり、別のスキャンスレッドを作成する必要はありません。このテクノロジーにより、アプリケーションがJEE環境で喜んで実行できるようになります。
6.リリス、リリスは、log4jチェーンソーと同様のログイベントの観察者です。 Lilithは、大量のログデータを処理することもできます。
7.注意モードと非常に友好的な回復。注意モードでは、複数のFileAppenderインスタンスが複数のJVMの下で実行され、同じログファイルを安全に記述できます。 RollingFileAppenderにはいくつかの制限があります。 LogbackのFileAppenderとRollingFileAppenderを含むそのサブクラスは、I/Oの例外から非常に友好的な回復できます。
8。構成ファイルは、さまざまな状況を処理できます。開発者は、さまざまなログバック構成ファイルが異なる環境(開発、テスト、生産)にあると判断する必要があることがよくあります。また、これらの構成ファイルはわずかに異なり、介して実装できるため、構成ファイルが複数の環境に適応できます。
9。フィルター、時には、問題を診断してログする必要があります。 log4jでは、ログレベルは低下するだけですが、これにより多数のログが生成され、アプリケーションのパフォーマンスに影響します。ログバックでは、そのログレベルを維持し続け、いくつかの特別な状況を排除できます。たとえば、ログインしているユーザー、ログはデバッグレベルでヒットし、他のユーザーは警告レベルでヒットし続けることができます。この関数を実装するには、4行のXML構成のみが必要です。 mdcfilterを参照できます。
10。SiftingAppender(非常に多機能的なAppender)は、特定の実行パラメーターに基づいてログファイルを分割するために使用できます。たとえば、SiftingAppenderは、ログイベントをユーザーのセッションのフォローアップと区別することができ、各ユーザーにログファイルがあります。
11.印刷されたログを自動的に圧縮します。新しいファイルが生成されると、印刷されたログファイルが自動的に圧縮されます。圧縮は非同期プロセスであるため、大規模なログファイルであっても、圧縮プロセスでアプリケーションは影響を受けません。
12.スタックツリーにはパッケージバージョンがあります。ログバックは、パッケージデータが公開されたときにもたらされます。
13.古いログファイルを自動的に削除します。 TimebasedRollingPolicyまたはSizeandTimeBasedFNATPのMaxHistoryプロパティを設定することにより、生成されたログファイルの最大数を制御できます。 MaxHistory 12が設定されている場合、12か月以上になったログファイルは自動的に削除されます。
要するに、ログバックはlog4jよりも優れています。すべてのアプリケーションをログバックで構築しましょう!
3.ログバックをプロジェクトに紹介します
パッケージの依存関係を追加し、Mavenスタイルを追加します。
<依存関係> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-logging </artifactid> </dependency> <dependency> groupid> logstash.logback.logback </groupId> <artifactid> logstash-back-encoder </artifactid> </>>>>>>>>>>> < <groupId> net.logstash.log4j </groupId> <artifactid> jsonevenvent-layout </artifactid> <バージョン> 1.7 </version> </dependency>
4. logback.xmlを追加します
logback.xmlファイルをSRC/Main/Resourcesディレクトリに追加すると、システムはlogback.xml構成を自動的にロードします。
logback.xml:
<?xml version = "1.0" encoding = "utf-8"?> <構成スキャン= "true" scanperiod = "60秒" debug = "false"> <inclouds resource = "org/springframework/boot/logging/logback/base.xml"/> <contextname> contextname> < value = "e://test//logback.log"/> - > <プロパティ名= "log.path" value = "/users/chang/desktop/chlogs/logback.log"/> <arpender name = "stash"> <destiond> 192.168.220.83:9601 < name = "Console"> <! - <filter> <lether>エラー</revel> </filter> - > <encoder> <pattern>%d {hh:mm:ss.sss}%contextname [%thread]%-5level%logger {36} - %msg%n </pattern> </encoder> </opend < <file> $ {log.path} </file> <RollingPolicy> <filenamepattern> logback。 %msg%n </pattern> </encoder> </appender> <root level = "info"> <appender-ref ref = "stash"/> <appender-ref ref = "console"/> <appender-ref ref = "file"/> </root> <! - logbackはjava <log.log.log.log.logbackのパッケージです。 class <logger name = "com.dudu.controller.learncontroller" level = "warn" addition = "false"> <appender-ref ref = "console"/> </logger> - > </configuration>5。Logstash-Logback-Encoderバージョンの問題
Spring-Bootでは、Logstash-Logback-Encoderを使用する場合、パッケージの依存関係の競合を避けるために、特定のバージョン番号をMavenに伝える必要がある場合があります。たとえば、次のように、Logback-Core、Logback-Classic、およびLogback-Accessの依存関係を設定できます。
<properties> <ch.qos.logback.version> 1.2.3 </ch.qos.logback.version> </properties> <depencemanagement> <deplencyid> ch.qos.logback </groupid> <artifactid> logback-core </artifaction <Dependency> GroupId> ch.qos.logback </groupid> <artifactid> logback-classic </artifactid> <version> $ {ch.qos.logback.version} </version> </depence> <deplency> <groupid> ch.qos.logback </groupid> logactid> logactid> logactid> logaccess </articces <バージョン> $ {ch.qos.logback.version} </version> </Dependency> </Dependency> </DependencyManagement>6。Logstashサービス構造
参照:
1.Logstash-Logback-Encoder
要約します
上記は、LogBack、Logstash、およびELKを使用して、紹介されたSpring Bootでログファイルを録画する方法です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!