blog

SpringBootのロギング

ファイルへのロギング出力の設定# 指定されたファイルへの出力\nlogging.file=./logs/application.log\n\n# 指定されたディレクトリに出力\nlogging.pat...

Jan 28, 2018 · 7 min. read
シェア


SpringBootのロギング

ファイルへのログ出力を設定する

# 指定ファイルへの出力
logging.file=./logs/application.log

# 指定したディレクトリに出力
logging.path=./logs

ログに情報を追加する

ログにカスタム情報を追加するには、MDCクラス

  • 設定ファイル
logging.pattern.level=user:%X{user} %5p
  • Classes:
    • org.apache.log4j.MDC
    • org.c.b.foo;
    • org.slf4j.
      MDC.put('user', 'Hello');
      • 出力結果
      -01-18 23:55:10.836 user:Hello INFO 7011 --- [nio-8080-exec-1].com..log.LogController : log 2
      

      ログバック・コンフィギュレーション

      タグの属性

      • <configuration>

        <
        • scan: この属性が true に設定されると、設定ファイルが変更された場合にリロードされます。 デフォルトはfalse
      • <root>: 使用するロギング容量の最も基本的なレベルを指定します。

        • TRACE, DEBUG, INFO, ERROR, ALL, OFF;
      <root level="debug">
       <appender-ref ref="console" />
       <appender-ref ref="file" />
      </root>
      
      • <contextName>: Context名、Default名、Default名、Apricot名は区別するために使われ、通常はProjekt名に変更されます、%contextName

      • <springProperty>

        • name: 変更可能な番号の名称
        • value: 価値

      変數の定義${}

      • <appender>: 変数をフォーマットするためのタグ。
        • name: アペンダーの名前

        • class: 出力ストラテジーを指定するために使われます。 encoder>は同じ目的を果たしますが、&layout>は単にイベントイベントを文字列にするのに対し、<encoder>はイベントイベントをバイト配列にし、ファイルに出力します

        • <logger>: パッケージやクラスのロギングを指定します。 属性のロギングを指定します

          • name: クラスまたはパッケージ名
          • level: ロギングレベル
          • addtivity: ログが上位レベルに印刷を渡すかどうか、デフォルトはtrue
          • 子ノード <appender-ref>: そのアペンダへの出力を指定するために使われます。 ref属性で指定された、そのアペンダへの出力を指定するために使われます
      <configuration> ... <!--クラス名またはパッケージ名 --> <logger name=.com." level="DEBUG" additivity="false"> <appender-ref ref="CONSOLE"/> </logger> </configuration>

      これはCONSOLEに出力されます。additivityをtrueに変更すると、CONSOLEとrootにそれぞれ1回ずつ出力されます

      • <springProfile>
        • 名前 : 環境の名前で、test、dev、prod、stagingなどがあります。
      • application-${env}.propertiesapplication-${env}.propertiesです。
      <!-- 環境はカンマで区切ります。 -->
      <springProfile name="test,dev">
       <logger name=.com." level="DEBUG" additivity="false">
       <appender-ref ref="CONSOLE"/>
       </logger>
      </springProfile>
      • <springProperty> : SpringのEnviromentからプロパティを取得し、application.properties; read parameters, role and <property> the same
        • scope: プロパティのスコープ、通常はコンテキストを読み込む
        • name: プロパティ名
        • source: application.properties;ファイル内の設定名、文字列の形式でなければなりません
        • defaultValue: デフォルト値

      設定ファイル

      • 共通設定
      <?xml version="1.0" encoding="UTF-8"?>
      <configuration scan="true" scanPeriod="60 seconds" debug="false">
       
       <springProperty name="LOG_PATH" value="SpringBoot-Log/out/logs"/>
       <contextName>SpringBootLog</contextName>
       <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
       <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
       <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
       <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%21.21t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
       <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%21.21t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
      
       
       <!--コンソールへの出力 ConsoleAppender-->
       <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
       <encoder>
       <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
       </encoder>
       </appender>
      
       <!-- ファイルへの出力 -->
       <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
       <!-- ログに記録されるログファイルのパスとファイル名 -->
       <file>${LOG_PATH}/SpringBootLog.log</file>
       <!-- ロガーのローリング戦略(日付別、サイズ別 -->
       <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
       <!--アーカイブされたログファイルへのパス。%d{yyyy-MM-dd}日付の書式を指定します。%iインデックスの指定 -->
       <fileNamePattern>${LOG_PATH}/SpringBootLog-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
       <!-- 10Mを超えると、ログファイルはインデックス0から始まります。 -->
       <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
       <maxFileSize>10MB</maxFileSize>
       </timeBasedFileNamingAndTriggeringPolicy>
       <!--ログファイルの保存日数-->
       <MaxHistory>30</MaxHistory>
       </rollingPolicy>
       <!-- 追加ログ -->
       <append>true</append>
       <!-- ログファイルのフォーマット -->
       <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
       <pattern>${FILE_LOG_PATTERN}</pattern>
       <charset>utf-8</charset>
       </encoder>
       <!--ログ出力レベルの設定-->
       <filter class="ch.qos.logback.classic.filter.LevelFilter">
       <level>ERROR</level>
       <onMatch>ACCEPT</onMatch>
       <onMismatch>DENY</onMismatch>
       </filter>
       </appender>
       <!-- パッケージのログレベルを指定 -->
       <logger name="org.springframework" level="WARN" />
      
       <!--ログ出力の最も基本的なレベルを指定します。-->
       <root level="INFO">
       <!--appenderがこのロガーに追加されます。-->
       <appender-ref ref="CONSOLE"/>
       <appender-ref ref="FILE"/>
       </root>
      
      </configuration>

      パターンの属性

      • %p: 出力されるロゴ・メッセージの優先度、Sunawachi、DEBUG、INFO、WARN、ERROR、FATAL、

      • %d{yyyy-MM-dd HH:mm:ss.SSS}%d{yyyy-MM-dd HH:mm:ss.SSS}, 出力は次のようになります: 2019-01-19 14:47:03.735

      • %r: アプリケーションの起動

      • %c: ロゴとメッセージはクラークスに帰属し、通常はクラークスのフルネームに貢献します。

      • %t: 名前の前にロゴとインターネットサイトの生成に貢献します。

      • %l: ロゴとイベントは、クラブ名が入る場所に発展しています。 %C.%M (%F:%L) この2つの組み合わせは、もう一方の組み合わせに匹敵します。 M(%F:%L)コード内の行数、コンピュータ名、コード内の行数が含まれます。

      • %x: 現在のソリはNDCに関連しています。特別な機能、Javaサーブレット、マルチック、マルキスレッド、アプリケーション

      • %%: % テキストはとても役に立ちます、%F: ロゴはフォーラム名の前に生成されます。 F: fbiの名前の前にロゴが生成されます、%L: コードの行数に制限はありません、%mコード内の指定されたメッセージを使用して、ロギング固有の情報を生成します。

      • %n桐木零、Windowsプラットフォーム、Unixプラットフォーム、ロジスティック・インテリジェンスの刷新に貢献。

      • %装飾は本文とモードテキストの間に追加されます。 ライン配信が可能です、%テキストは、テキストとモーダルテキストの間に追加され、そのテキストの最小、最大、全列が制御されます。 例:

        • %20c: 最小サイズが20の場合、またはリストに20以上の名前がある場合、「デフォルト」が右側に送信されます。

        • %-20c: 最小サイズが20の場合、または出場者名が20未満の場合は、出場者名を指定することができます、-マーキング番号は左の回路に割り当てられます。

        • %.30c:名前の前面の最大サイズは30で、30だと左の文字が切れ、30だと小さすぎる場合はそのページを使用します。

        • %20.30c:カルテガ20の名前の前が満タンの場ではありません、それはスペースを埋めます、右揃え、その名前が30文字よりも長い場、それは左から文字切り捨てのピンのうち遠く交差するようになります。

Read next

ガートナー:企業はWin7にとどまり、マイクロソフトのリリース・ケイダンスを無視すべきだ。

アナリスト会社ガートナーによると、企業はウィンドウズ7とオフィス2010を標準とし、マイクロソフトの新しいOSやスイートは何年も無視すべきとのこと。

Jan 21, 2018 · 3 min read