darjeeling-tea's blog

オープンな個人ノートです。

logback入門 〜logbackの設定

logbackの設定

https://logback.qos.ch/manual/configuration_ja.html

基本構成

設定ファイルの探索順は以下。

クラスパス上でlogback.groovyというファイルを探します。
見つからなかったら、今度はクラスパス上でlogback-test.xmlを探します。
見つからなかったら、今度はクラスパス上でlogback.xmlを探します。
何も見つからなかったら、自動的にBasicConfiguratorを使って設定。ロギング出力は直接コンソールに出力される。以下と等価。

<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

設定ファイルが変更されたら自動的に再読み込みする。

<configuration scan="true" scanPeriod="30 seconds" > 
  ...
</configuration>

設定ファイルの構文

propertiesファイルを指定することも可能。

<configuration>

  <property file="src/main/java/chapters/configuration/variables1.properties" />
 <!-- クラスパス上のリソース指定 -->
  <property resource="resource1.properties" />

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
     <file>${USER_HOME}/myApp.log</file>
     <encoder>
       <pattern>%msg%n</pattern>
     </encoder>
   </appender>

   <root level="debug">
     <appender-ref ref="FILE" />
   </root>

変数のスコープはローカル、コンテキスト、システムの3種類。
xmlのpropertyにscope="context"などで指定。

変数のデフォルト値は"${aName :-golden }"で指定可能。bash記法。

その他にも以下あり。用法を守らないと複雑になるので乱用は厳禁。
・設定ファイル内の条件分岐
・JNDIから変数を取得
・ファイルの取り込み(includeで他XMLを取り込む)