biz-Streamマニュアルライブラリ共通ガイド第4章 ログ設定4.4 出力先とローテーションの設定

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)になります。
【記述例】:

<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・・・のように出力されていきます。
設定できる書式と出力されるファイル名の具体例は下記のようになっています。
記述例:
<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を付与すると、出力されたファイルが自動的に圧縮されます。