4.4 出力先とローテーションの設定
ファイル出力の設定方法
出力先をファイルにする場合の設定方法です。logback.xml の以下の項目を設定します。
<property name='log.dir' value="C:/ProgramData/brainsellers/bs/logs" />
設定できる属性等は以下のとおりです。
属性 | 説明 |
---|---|
name | log.dir固定のため変更しないでください。 |
value | ログ出力先パスを指定します。 絶対パスまたはカレントディレクトリからの相対パスで指定します。 |
-
biz-Streamのログは、SLF4Jのクラスを呼んでLogbackから出力されますが、アプリケーションサーバ等に SLF4J を別のロギングに委譲する
ライブラリ(slf4j-jcl-*.jar、slf4j-log4j12-*.jarなど)が存在する場合は、biz-StreamのLogbackではなくそちらのロギングからログが出力される場合があります。その場合は、biz-StreamのLogback設定を優先するように、以下のJava起動引数を定義してください。
「-Dlogback.configurationFile=/xxx/logback.xml」
ローテーションの設定方法
サイズ、または日付によるローテーションの設定が可能です。
サイズによるローテーション
ファイル出力したログが設定したサイズに達したときにファイルを切り替えます。設定できる属性等は以下のとおりです。
属性 | 説明 |
---|---|
name | 定義名を定義する。 (logger要素のappender-ref要素のref属性から参照される) |
class | ch.qos.logback.core.rolling.RollingFileAppender |
file | ファイルパス、ファイル名 |
rollingPolicy | ローテーションの方法を設定します。 サイズの場合はclassとして ch.qos.logback.core.rolling.SizeBasedTriggeringPolicyを指定します。 |
FileNamePattern | ローテーションするファイルの命名規則を設定します。 |
MinIndex | ローテーションしたファイルの最小の添字 |
MaxIndex | ローテーションしたファイルの最大の添字 |
MaxFileSize | 最大サイズ(単位:無指定(Byte),KB,MB,GB デフォルト値:10MB) |
Pattern | 出力する書式を設定します。 |
charset | ログ出力時の文字エンコードを設定します。 Javaのエンコーディング名が使用できます。 デフォルトは実行環境のデフォルトエンコーディングです。 |
下記の場合、ログファイルはbspdf1.log、bspdf2.log、bspdf3.logの名前で順次作成されます。
また、ログファイルが切り替わるトリガーは、サイズ(5MB)になります。
【記述例】:
また、ログファイルが切り替わるトリガーは、サイズ(5MB)になります。
【記述例】:
<appender name="PDFLIB_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.dir}/bspdf.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <FileNamePattern>${log.dir}/bspdf%i.log</FileNamePattern> <MinIndex>1</MinIndex> <MaxIndex>3</MaxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>5MB</MaxFileSize> </triggeringPolicy> <encoder> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level %logger - %msg%n%ex{full}</Pattern> <charset>MS932</charset> </encoder> </appender>
時間によるローテーション
設定した時間を経過したときにログファイルを切り替えます。設定できる属性等は以下のとおりです。
属性 | 説明 |
---|---|
Name | 定義名を定義する。 (logger要素のappender-ref要素のref属性から参照される) |
Class | ch.qos.logback.core.rolling.RollingFileAppender |
File | ファイルパス、ファイル名 |
rollingPolicy | ローテーションの方法を設定します。 時間の場合はclassとしてch.qos.logback.core.rolling.TimeBasedRollingPolicyを指定します。 |
FileNamePattern | ローテーションするタイミングを設定します。 下記の設定が可能です。 |
%d 日毎(夜中) %d{yyyy-MM}.log 月のはじめ %d{yyyy-ww}.log 週のはじめ %d{yyyy-MM-dd-a}.log 毎日正午と夜中 %d{yyyy-MM-dd_HH}.log 毎時 %d{yyyy-MM-dd_HH-mm}.log 毎分 |
|
Pattern | 出力する書式を設定します。 |
charset | ログ出力時の文字エンコードを設定します。 Javaのエンコーディング名が使用できます。 デフォルトは実行環境のデフォルトエンコーディングです。 |
以下は時間でローテーションを行う際の記述例です。
この例では分ごとに出力するファイルを切り替えます。
ログファイルは分ごとにbspdf2008-09-01-11_01.log、bspdf2008-09-01-11_02.log、bspdf2008-09-01-11_03.log・・・のように出力されていきます。
設定できる書式と出力されるファイル名の具体例は下記のようになっています。
記述例:
この例では分ごとに出力するファイルを切り替えます。
ログファイルは分ごとにbspdf2008-09-01-11_01.log、bspdf2008-09-01-11_02.log、bspdf2008-09-01-11_03.log・・・のように出力されていきます。
設定できる書式と出力されるファイル名の具体例は下記のようになっています。
記述例:
<appender name="PDFLIB_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.dir}/bspdf.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${log.dir}/bspdf%d{yyyy-MM-dd_HH-mm}.log</FileNamePattern> </rollingPolicy> <encoder> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level %logger - %msg%n%ex{full}</Pattern> <charset>UTF-8</charset> </encoder> </appender>
書式 | 説明 |
---|---|
%d | 日付が変わると切り替わります。 bspdf2008-09-01.log、bspdf2008-09-02.log、bspdf2008-09-03.log・・・ のように出力されます。 |
%d{yyyy-MM}.log | 月のはじめに切り替わります。 bspdf2008-09.log、bspdf2008-10.log、bspdf2008-12.log・・・ のように出力されます。 |
%d{yyyy-ww}.log | 週のはじめに切り替わります。 bspdf2008-38.log、bspdf2008-39.log、bspdf2008-40.log・・・ のように出力されます。 |
%d{yyyy-MM-dd-a}.log | 毎日正午と夜中に切り替わります。 bspdf2008-09-01-AM.log、bspdf2008-09-01-PM.log、 bspdf2008-09-02-AM.log・・・ のように出力されます。 |
%d{yyyy-MM-dd_HH}.log | 時間ごとに切り替わります。 bspdf2008-09-01-11.log、bspdf2008-09-01-12.log、 bspdf2008-09-01-13.log・・・ のように出力されます。 |
%d{yyyy-MM-dd_HH-mm}.log | 分ごとに切り替わります。 bspdf2008-09-01-11_01.log、bspdf2008-09-01-11_02.log、 bspdf2008-09-01-11_03.log・・・ のように出力されます。 |
ファイル名の後ろにgzまたはzipを付与すると、出力されたファイルが自動的に圧縮されます。