springboot2.x基本チュートリアル:ログ構成

プロジェクトの開発プロセスでは、開発者はログに精通しています。ログは、プログラム操作の軌跡を記録し、ソフトウェア操作で重要な情報を出力し、問題のトラブルシューティングと特定、プログラムのパフォーマンスの最適化、およびプログラムの操作ステータスの監視に役立ちます。
SpringBootプロジェクトのspring-boot-starterは、デフォルトでspring-boot-starter-loggingを参照します。この場合、最下層ではログバックロギングフレームワークが使用され、ロギング機能はデフォルトでゼロ構成で使用できます。
Springbootログの設定を説明する前に、JAVAログの基本的な知識について簡単に説明しましょう。

ロギングのタイミング

  • プログラム初期化の起動パラメータを記録し、プログラムの実行状態を判断
  • コードは例外をスローし、プログラムの異常な状態を記録します
  • ビジネスプロセスが予期される結果と一致せず、ビジネスの異常な状態が記録されている
  • システムコアビジネス、コアオーソリティオペレーション。たとえば、ログインや支払いなどの操作記録は、通常、データベースに含まれて分析されます。

Javaロギングフレームワーク

ログフレームワークの場合、通常はlog4jやlogbackなどの名詞が表示されます。また、独自のプロジェクトとサードパーティのjarのログライブラリの間で競合が発生します。
初めてこれらに触れたときは、雲と霧が理解できないように感じるかもしれません。Javaロギングフレームワーク間の関係について簡単に紹介します。より具体的な歴史的理由、詳細。インターネットには非常に優れた記事がいくつかあります。私はそれらをあなた自身の読解力に付け加えます。

  1. 上記の記事があることを知ってください:Javaログフレーム分析
  2. ブログに記事があります:Java Common Log Frameworkの概要

上記の記事を読んだ後、Javaロギングフレームワークの概要は3つのカテゴリに分けられます。

  • Javaロギングフレームワークの特定の実装:log4j1.x、JUL(Java Util Log)、Logback、log4j2-core
  • Javaロギングフレームワークのファサードオブジェクトは、インターフェースのみを提供し、特定の実装は提供しません。JCL(Commons Logging)、SLF4J(Javaのシンプルロギングファサード)、log4j2-api
  • 異なるログフレームワークを変換するためのJavaログフレームワーク間のアダプター:jcl-over-slf4j、slf4j-jcl、log4j-over-slf4j、slf4j-log4j12など
    オンラインの画像ソース

ロギングフレームワークのベストプラクティス(ソース参照リンク、ここでは抜粋):

  1. 特定のログ実装の代わりに常にログファサードを使用する
  2. ログ実装の依存関係のみを追加する
  3. 特定のログ実装依存関係をオプションに設定し、ランタイムスコープを使用する必要があります
  4. 必要に応じて、依存するサードパーティライブラリのログインプリメンテーションの依存関係を除外します
  5. 不要なログの出力を避け、行番号などの不要なログフィールドがプログラムのパフォーマンスに影響する

SpringBootログ構成

ログの依存関係

SpringbootはデフォルトでSLF4J + Logbackの組み合わせを使用してログを記録し、依存関係を確認できるため、それらを紹介する必要はありません。

Springbootログ構成

logging:
  level:
    #包的日志级别
    org.springframework.web: DEBUG
  #自定义log信息
  config: classpath:config/logback-spring.xml
  pattern:
    #控制台的日志输出格式
    console: '%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n'
    #文件的日志输出格式
    file: '%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n'
  file:
    #日志名称
    name: app.log
    #存储的路径
    path: /var/log/
    #存储的最大值
    max-size: 50MB
    #保存时间
    max-history: 7

カスタムログ構成

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--获取变量名中关于日志存储的路径与存储名称-->
    <springProperty scope="context" name="logPath" source="logging.file.path"/>
    <springProperty scope="context" name="logName" source="logging.file.name"/>
    <!--输出到控制台的appender-->
    <appender name="Console"
              class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>
    <!--输出到文件的appender-->
    <appender name="RollingFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logPath}/${logName}</file>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>

        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!--开发环境基本级别为DEBUG-->
    <springProfile name="dev">
        <root level="DEBUG">
            <appender-ref ref="Console"/>
        </root>
    </springProfile>
    <!--生产环境输入到文件中-->
    <springProfile name="prod">
        <root level="INFO">
            <appender-ref ref="RollingFile"/>
        </root>
    </springProfile>
</configuration>

千マイルは単一のステップから始まります。これはSpringBootチュートリアルシリーズの8番目の記事で、すべてのプロジェクトソースコードはGitHubからダウンロードできます

おすすめ

転載: blog.csdn.net/github_35592621/article/details/108248869