ログ取得に関する設定
Sm@rtDBのログ取得に関する設定を「log4j.xml」にて行います。
ファイルパス: /etc/hibiki/
ファイル名: log4j.xml
log4jの概要
log4jはJavaプログラム向けのログ取得APIで、log4j.xmlはその動作を制御する設定ファイルです。log4jは「Appender」、「Layout」、「Category」の3つのメイン要素から構成され、それぞれが協調して動作することでログメッセージの出力先や形式、優先度などを制御することができます。「Appender」、「Layout」、「Category」の働きは次のとおりです。
- Appender:ログの出力先を指定する。
- Layout:ログの出力レイアウトを指定する。
- 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>