intra-mart Accel Platform ログ仕様書 第12版 2019-12-01

Logger

Loggerは、以下の役割を担います。
Loggerは <logger> で設定します。
<logger> で指定可能な属性設定は以下の通りです。
属性 必須設定 説明
name ロガー名」を指定します。
level ×
ログレベル」を指定します。
未指定の場合は、継承元のロガーのログレベルが設定されます。
additivity ×
継承元の(appender-ref などの)設定を受け継ぐかどうかを指定します。
継承元の設定を受け継ぐ場合は、true、受け継がない場合は、false を指定します。
未指定の場合は、true を設定したものとして扱われます。
<logger> で指定可能な子要素は以下の通りです。
子要素名 タイプ 必須設定 説明
level String ×
ログレベル」を指定します。
未指定の場合は、継承元のロガーのログレベルが設定されます。
appender-ref String ×
ロガーで利用する「Appender」を指定します。Appenderの設定で指定した識別子を設定します。
この要素は、複数設定可能です。

コラム

level 属性と level 子要素を両方指定した場合は、子要素の設定が優先されます。

注意

利用するAppenderの設定は <logger> より上部に記述してください。
指定可能なAppenderの設定は、im_logger.xml に記載されているもの、または、同一ファイルに設定されているAppenderのみです。

ルートロガー

ルートロガーとは、ロガー名の設定に一致するロガー名が存在しない場合に利用されるロガーです。
<root> にてルートロガーの設定を行います。
<root> で指定可能な属性設定は以下の通りです。
属性 必須設定 説明
level ×
ログレベル」を指定します。
属性、子要素ともに未指定の場合は、DEBUG を設定したものとして扱われます。
<root> で指定可能な子要素は以下の通りです。
子要素名 タイプ 必須設定 説明
level String ×
ログレベル」を指定します。
属性、子要素ともに未指定の場合は、DEBUG を設定したものとして扱われます。

コラム

level 属性と level 子要素を両方指定した場合は、子要素の設定が優先されます。

注意

利用するAppenderの設定は <root> より上部に記述してください。
指定可能なAppenderの設定は、im_logger.xml に記載されているAppenderのみです。

ログレベル

ログ出力時にログの重要度を指定します。指定可能なログレベル、および、用途は以下の通りです。
ログレベル 用途
ERROR 予期しない動作などにより、処理を継続できない場合。アプリケーションでエラーが発生した場合。
WARN 問題が発生したが、処理の継続が可能である場合。運用者によるリカバリが可能である場合。
INFO 運用者に対して障害情報ではない何らかの情報を通知したい場合。
DEBUG バグ解析などを目的としたデバッグ情報を通知したい場合。
TRACE メソッドの引数、および、戻り値等、メソッド内の情報を通知したい場合。
ログの設定で利用可能なログレベルの設定値、および、出力範囲は以下の通りです。
設定値 出力範囲
OFF なにも出力しません。
ERROR ERROR
WARN ERROR, WARN
INFO ERROR, WARN, INFO
DEBUG ERROR, WARN, INFO, DEBUG
TRACE ERROR, WARN, INFO, DEBUG, TRACE
ALL ERROR, WARN, INFO, DEBUG, TRACE
NULL 継承元のロガーと同じ出力範囲が設定されます。ルートロガーでは指定できません。
INHERITED 継承元のロガーと同じ出力範囲が設定されます。ルートロガーでは指定できません。

コラム

設定値として指定するログレベルは大文字、小文字を問いません。

ロガー名

ロガー名とは、ロガーに割り当てる名称です。単純にロガーとも呼びます。ログの出力設定は、ロガーごとに独立して設定することが可能です。
ロガー名は、階層構造を持たせることが可能となっており、ドット(.)で区切られた文字列を指定することで、親階層のロガー名の設定を継承できます。
ルートロガーの設定と各ロガー名の設定により、ログの出力設定が確定します。

ロガー名の設定の継承例

以下では、凡例を用いて階層構造によるロガー名の設定の継承を説明します。

Case 1

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- appender設定は省略しています。 -->

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

</configuration>
上記のように %CONTEXT_PATH%/WEB-INF/conf/log/im_logger.xml で設定が行われている場合のログ出力は以下の通りです。
ロガー名に対して特に設定を行っていないため、ログがルートロガーの設定で出力されます。
ロガー名 有効となるログレベル 出力先
foo.App DEBUG STDOUT
foo.bar.App DEBUG STDOUT
foo.bar.baz.App DEBUG STDOUT

Case 2

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- appender設定は省略しています。 -->

    <logger name="foo.bar">
        <level value="info" />
        <appender-ref ref="FILE" />
    </logger>

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

</configuration>
上記のように %CONTEXT_PATH%/WEB-INF/conf/log/im_logger.xml で設定が行われている場合のログ出力は以下の通りです。
foo.bar に対して設定を行っているため、継承関係にある foo.bar.APP、および、foo.bar.baz.Appfoo.bar に対しての設定が反映されています。
ロガー名 有効となるログレベル 出力先
foo.App DEBUG STDOUT
foo.bar.App INFO STDOUT, FILE
foo.bar.baz.App INFO STDOUT, FILE

Case 3

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- appender設定は省略しています。 -->

    <logger name="foo.bar">
        <level value="info" />
        <appender-ref ref="FILE" />
    </logger>

    <logger name="foo.bar.baz">
        <level value="debug" />
    </logger>

    <root>
        <level value="warn" />
        <appender-ref ref="STDOUT" />
    </root>

</configuration>
上記のように %CONTEXT_PATH%/WEB-INF/conf/log/im_logger.xml で設定が行われている場合のログ出力は以下の通りです。
foo.bar.baz.App には、一番近い親である foo.bar.baz の設定が反映されています。
ロガー名 有効となるログレベル 出力先
foo.App WARN STDOUT
foo.bar.App INFO STDOUT, FILE
foo.bar.baz.App DEBUG STDOUT, FILE

Case 4

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- appender設定は省略しています。 -->

    <logger name="foo.bar" additivity="false">
        <level value="info" />
        <appender-ref ref="FILE" />
    </logger>

    <logger name="foo.bar.baz">
        <level value="warn" />
    </logger>

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

</configuration>
上記のように %CONTEXT_PATH%/WEB-INF/conf/log/im_logger.xml で設定が行われている場合のログ出力は以下の通りです。
foo.baradditivity 属性に false が指定されているため、foo.bar 配下はルートロガーの設定が反映されません。
ロガー名 有効となるログレベル 出力先
foo.App DEBUG STDOUT
foo.bar.App INFO FILE
foo.bar.baz.App WARN FILE