ログ取得に関する設定

Sm@rtDBのログ取得に関する設定を「log4j.xml」にて行います。

ファイルパス: /etc/hibiki/
ファイル名: log4j.xml

log4jの概要

log4jはJavaプログラム向けのログ取得APIで、log4j.xmlはその動作を制御する設定ファイルです。log4jは「Appender」、「Layout」、「Category」の3つのメイン要素から構成され、それぞれが協調して動作することでログメッセージの出力先や形式、優先度などを制御することができます。「Appender」、「Layout」、「Category」の働きは次のとおりです。

  1. Appender:ログの出力先を指定する。
  2. Layout:ログの出力レイアウトを指定する。
  3. Category:ログの出力対象を分類し、出力レベルや出力有無を指定する。

ログ出力先の設定(Appender)

ログの出力先の設定をAppenderで行います。Sm@rtDBで使用するAppenderとオプションは【表 使用するAppender一覧】のとおりです。また各オプションの意味は表 【表 Appenderのオプション】のとおりです。またappender要素のname属性でAppenderごとに参照名を設定することができます。この名前を用いてログ出力対象を分類することも可能です。

(分類については【ログ出力レイアウトの設定(Layout)】を参照してください。)

表 使用するAppender一覧

Appender ログ出力先 指定できるオプション
SyslogAppender syslogに出力。 SyslogHost
Facility
FacilityPrinting
Header
Threshold
ConsoleAppender 標準出力または標準エラー出力。 Target
Threshold
ImmdediateFlush
Encoding
RollingFileAppender ファイルに出力。
ファイルサイズによりローテートを行う。
MaxFileSize
MaxBackupIndex
File
Append
BufferdIO
BufferSize
Threshold
ImmediateFlush
Encoding
DailyRollingFileAppender ファイルに出力。
日時によりローテートを行う。
DatePattern
File
Append
BufferdIO
BufferSize
Threshold
ImmediateFlush
Encoding

表 Appenderのオプション

オプション 意味
SyslogHost リモート受信モードのsyslogdが起動しているマシン名およびポート番号。
Facility 使用するファシリティ。
FacilityPrinting ログにファシリティ情報も出力するかどうかの設定。
Header ログにタイムスタンプとホスト名を出力するかどうかの設定。
true:ログに出力する。
false:ログに出力しない。
Threshold ログ出力対象にするログレベル(プライオリティ)。
Target ログの出力先。
System.out:標準出力
System.err:標準エラー出力
ImmediateFlush ログの書き込みバッファを即時に反映させるかどうかの設定。
true:即時に反映する。
false:即時に反映しない。
Encoding 出力ストリームのエンコーディング設定。
MaxFileSize ローテートの基準となるファイルサイズ。「K(キロ)」「M(メガ)」「G(ギガ)」などの接頭辞を示す記号をつけて表現することも可能。
MaxBackupIndex ローテートした際のバックアップファイルの保存数。
File ログを出力するファイル名。
Append ログファイルを追記モードとするかどうかの設定。
true:追記モードとする。
false:追記モードとしない。
BufferdIO ログ情報をバッファリングするかどうかの設定。
true:バッファリングする。
false:バッファリングしない。
BufferSize ログ情報をバッファリングする場合のバッファサイズ。
DatePattern ローテートの基準となる日時。
‘.’yyyy-MM:月(Month)が変わったとき。
‘.’yyyy-ww:週(week)が変わったとき。
‘.’yyyy-MM-dd:日付(day)が変わったとき。
‘.’yyyy-MM-DD-a:正午になったとき。

午前と午後の両方が対象になる。
‘.’yyyy-MM-DD-HH:時(Hour)が変わったとき。
‘.’yyyy-MM-DD-HH-mm:分(minute)が変わったとき。
ShowStackTrace ログにStacktraceを出力するかどうかを設定。
true:ログに出力する。
false:ログに出力しない。
また、ShowStackTraceオプションを使用するためには、上位に以下のclass属性を持つlayout要素を指定する必要があります。
class:jp.co.dreamarts.insuite.system.logging.HibikiPatternLayout

・記述例
<layout class="jp.co.dreamarts.insuite.system.logging.HibikiPatternLayout">
  <param name="ShowStackTrace" value="false"/>
</layout>

ログ出力レイアウトの設定(Layout)

Appender毎のログ出力のレイアウトを設定します。ここではデフォルトで利用している「PatternLayout」について記載します。

レイアウトはlayout要素配下のparam要素のname属性に「ConversionPattern」を指定しvalue属性にパターン文字列を指定することで設定できます。パターン文字列の一覧は、以下の【表 ConversionPatternに指定できるパターン文字列】のとおりです。

表 ConversionPatternに指定できるパターン文字列

パターン文字列 意味
%c カテゴリ名。
%c{1}のように{ }内に取得するレベルを指定することが可能。
%C ログを生成したクラス名。
%C{1}のように{ }内に取得するレベルを指定することが可能。
%d ログを生成した日付情報。
%d{yyyy-MM-dd HH:mm:ss}のように{ }内に取得する日付フォーマットを指定することが可能。
%l ログを生成したソースファイル名と行数。
※性能への影響を考慮して使用してください。
%F ログを生成したソースファイル名。
※性能への影響を考慮して使用してください。
%L ログを生成したソースファイルの行数。
※性能への影響を考慮して使用してください。
%M ログを生成したメソッド名。
※性能への影響を考慮して使用してください。
%m ログメッセージ。
%x NDCにプッシュされた文字列。
%X{key} MDCにセットされた文字列(key)。
※監査ログ取得する項目は、この文字列(key)で指定します。
指定可能な項目については【監査ログのフィールド定義】を参照してください。
%n 改行を挿入する。
%p ログレベル(プライオリティ)。
%r ログ取得機能がセットアップされてからの経過時間(単位はミリ秒)
%t ログを生成したスレッド名。

ログ出力対象の分類と設定(Category)

ログ出力対象であるAppenderをカテゴリに分類し、カテゴリごとにログレベル(プライオリティ)や上位カテゴリの設定を引き継ぐかどうかを設定します。

表 ログ出力対象の分類と設定

要素 Category
属性 名称 説明
name カテゴリ名。
addivity 上位カテゴリの設定を引き継ぐかどうかを設定。
TRUE:引き継ぐ。
FALSE:引き継がない。
要素 category.priority
属性 名称 説明
value カテゴリごとのログレベル(プライオリティ)。
TRACE:詳細なデバッグログ
DEBUG:デバッグログ
INFO:情報ログ
WARN:警告ログ
ERROR:エラーログ
FATAL:致命的なエラーログ
要素 category.appender-ref
属性 名称 説明
value カテゴリに含むAppender参照名。
(参照名については【ログ出力先の設定(Appender)】を参照してください。)
記述例 <category name="AuditLog" additivity="false"><br>
    <priority value="trace" /><br>
    <appender-ref ref="SMARTDB_AUDIT_LOG" /><br>
</category>

■ カテゴリ名"velocity"のログレベルについて

Sm@rtDB Ver.2.2.1より前のインストーラを使用して構築した環境では、カテゴリ名"velocity"に対するログレベルの設定値が”ERROR”となっています。

通常、"ERROR"レベルのログにはシステムエラーの可能性があるログが出力されますが、カテゴリ名"velocity"のログについては、システムエラーを示すログは"FATAL"レベルにのみ出力されます。

そのため、カテゴリ名"velocity"のログについては"FATAL"レベルのログのみでシステムエラーの監視が可能です。必要に応じてlog4j.xmlのログレベルを設定してください。

■ 設定例

<category name="velocity">
  <priority value="FATAL" />
  <appender-ref ref="HIBIKI_LOG" />
</category>