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

Filter

この設定はAppenderで設定可能です。<filter> で設定します。
Filterは、以下の役割を担います。
  • ログ出力時に出力先に対してそのメッセージを出力するかの判定
この設定は <filter> を複数記述することで複数指定可能です。複数指定を行った場合、上から記述を行った順番に判定を行います。
以下は「ConsoleAppender」にFilterを指定した場合の im_logger.xml の例です。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>DENY</onMatch>
        </filter>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>DENY</onMatch>
        </filter>
        <encoder>
            <outputPatternAsHeader>true</outputPatternAsHeader>
            <pattern>[%level] %logger{10} - [%X{log.message.code}] %msg%n</pattern>
        </encoder>
    </appender>

</configuration>
この例では、以下のFilterが設定されています。
  • ログレベルWARNであるログメッセージを拒否する
  • ログレベルINFOであるログメッセージを拒否する
このAppenderを利用した場合、ログレベルERROR、DEBUG、TRACEであるログのみ出力されます。
SQLログを出力する」では、Filterを利用した設定例を紹介していますので、併せて参照してください。
<filter> で指定可能な属性設定は以下の通りです。
属性 必須設定 説明
class × Filterの実装クラスの完全修飾クラス名を指定します。
Filterに対しての設定は <filter> の子要素で指定します。設定可能な値(プロパティ)は、Filterの実装により異なります。
Filterの実装クラスとその他のクラスとの関連クラスの情報は以下の通りです。
../../../_images/filter.png
以下では各種Filterの実装を紹介します。

コラム

本書に記述されていないFilterについては「LogbackのWebサイト」を参照してください。

LevelFilter

ログレベルが特定の値と一致するかを判断し、一致/不一致の場合でのログ出力の有無をフィルタリングするFilterの実装です。

クラス名

ch.qos.logback.classic.filter.LevelFilter

プロパティ

プロパティ名 タイプ 必須設定 説明
level LEVEL 一致/不一致を判断する「ログレベル」を指定します。
onMatch FilterReply ×
ログメッセージのログレベルが <level> で指定したログレベルと一致している場合の、Filterの挙動を指定します。
指定可能な値は以下の通りです。
  • DENY : 出力先にログの出力を行いません。
  • NEUTRAL : 後続のFilterの判定に依存します。後続に設定されているFilterが無い場合はログの出力が行われます。
  • ACCEPT : 後続に設定されているFilterの判定を無視し、ログの出力を行います。
未指定の場合は、NEUTRAL を設定したものとして扱われます。
onMismatch FilterReply ×
ログメッセージのログレベルが <level> で指定したログレベルと一致していない場合の、Filterの挙動を指定します。
指定可能な値と挙動は <onMatch> と同様です。
未指定の場合は、NEUTRAL を設定したものとして扱われます。

ThresholdFilter

ログレベルが特定の重要度であるかを判断し、特定の重要度を満たさないログメッセージの出力を抑制するFilterの実装です。

クラス名

ch.qos.logback.classic.filter.ThresholdFilter

プロパティ

プロパティ名 タイプ 必須設定 説明
level LEVEL
重要度を判断する「ログレベル」を指定します。
例)
INFO を指定した場合、ERRORWARNINFO 以外のログ出力を抑制します。

EvaluatorFilter

ログメッセージが特定の条件に、一致した場合/不一致の場合でのログ出力の有無をフィルタリングするFilterの実装です。
条件の判定は <evaluator> に依存します。

クラス名

ch.qos.logback.core.filter.EvaluatorFilter

プロパティ

プロパティ名 タイプ 必須設定 説明
evaluator EventEvaluator ×
EventEvaluator」を指定します。
<evaluator> の class 属性が未指定の場合は「JaninoEventEvaluator」を利用します。
onMatch FilterReply ×
<evaluator> の条件と一致している場合の、Filterの挙動を指定します。
指定可能な値は以下の通りです。
  • DENY : 出力先にログの出力を行いません。
  • NEUTRAL : 後続のFilterの判定に依存します。後続に設定されているFilterが無い場合はログの出力が行われます。
  • ACCEPT : 後続に設定されているFilterの判定を無視し、ログの出力を行います。
未指定の場合は、NEUTRAL を設定したものとして扱われます。
onMismatch FilterReply ×
<evaluator> の条件と一致していない場合の、Filterの挙動を指定します。
指定可能な値と挙動は <onMatch> と同様です。
未指定の場合は、NEUTRAL を設定したものとして扱われます。

EventEvaluator

<evaluator> で設定します。
EventEvaluatorは、以下の役割を担います。
  • ログ出力時の何かしらのイベントを引数とした条件の判定
<evaluator> で指定可能な属性設定は以下の通りです。
属性 必須設定 説明
class × EventEvaluatorの実装クラスの完全修飾クラス名を指定します。
EventEvaluatorに対しての設定は <evaluator> の子要素で指定します。設定可能な値(プロパティ)は、EventEvaluatorの実装により異なります。
EventEvaluatorの実装クラスとその他のクラスとの関連クラスの情報は以下の通りです。
../../../_images/evaluator.png
以下では各種EventEvaluatorの実装を紹介します。

コラム

本書に記述されていないEventEvaluatorについては「LogbackのWebサイト」を参照してください。

OnErrorEvaluator

ログメッセージのログレベルが ERROR であるかどうかを判定するEventEvaluatorの実装です。

クラス名

ch.qos.logback.classic.boolex.OnErrorEvaluator

プロパティ

設定可能なプロパティはありません。

JaninoEventEvaluator

評価式としてJavaの構文を指定し、一致するかどうか判定するEventEvaluatorの実装です。
このEventEvaluatorを利用するためには、「Janino ライブラリ」をクラスパス上に配置する必要があります。

注意

intra-mart Accel Platform ではJanino ライブラリは同梱されていません。
このEventEvaluatorを利用するには別途ライブラリの配置作業が必要です。
ライブラリのダウンロード、および、配置については「SQLログを出力する」を参照してください。

クラス名

ch.qos.logback.classic.boolex.JaninoEventEvaluator

プロパティ

プロパティ名 タイプ 必須設定 説明
expression String
判定を行うための評価式を記述します。
評価式の詳細はLogbackのWebサイト「JaninoEventEvaluator」を参照してください。
matcher Matcher ×
Matcherを指定します。
Matcherの詳細はLogbackのWebサイト「JaninoEventEvaluator」を参照してください。
<matcher> を複数記述することで複数指定可能です。