Interface | Description |
---|---|
LogFormatter |
ログのフォーマットを行うインタフェース。
ログのフォーマットの種類毎に本インタフェースの実装クラスを作成する。 |
LogWriter |
ログを出力先に書き込むインタフェース。
出力先の媒体毎に本インタフェースの実装クラスを作成する。 |
Class | Description |
---|---|
BasicLogFormatter |
LogFormatter の基本実装クラス。BasicLogFormatterクラスの特徴を下記に示す。 ログに最低限必要な情報(日時、リクエストID、ユーザIDなど)を出力できる。 アプリケーションを起動しているプロセスを識別するために、システムプロパティで指定されたプロセス名をログに出力できる。 オブジェクトを指定してフィールド情報を出力できる。 例外オブジェクトを指定してスタックトレースを出力できる。 フォーマットを設定のみで変更することができる。 BasicLogFormatterは、プレースホルダを使用してフォーマットを指定する。 フォーマットに指定可能なプレースホルダの一覧を下記に示す。 |
BasicLogFormatter.BootProcessItem |
起動プロセスを取得するクラス。
|
BasicLogFormatter.DateItem |
出力日時を取得するクラス。
|
BasicLogFormatter.ExecutionIdItem |
実行時IDを取得するクラス。
|
BasicLogFormatter.InformationItem |
オプション情報に指定されたオブジェクトのフィールド情報を取得するクラス。
|
BasicLogFormatter.LoggerNameItem |
ロガー名を取得するクラス。
|
BasicLogFormatter.LogLevelItem |
ログレベルを取得するクラス。
|
BasicLogFormatter.MessageItem |
メッセージを取得するクラス
|
BasicLogFormatter.ProcessingSystemItem |
処理方式を取得するクラス。
|
BasicLogFormatter.RequestIdItem |
リクエストIDを取得するクラス。
|
BasicLogFormatter.RuntimeLoggerNameItem |
実行時ロガー名を取得するクラス。
|
BasicLogFormatter.StackTraceItem |
エラー情報に指定された例外オブジェクトのスタックトレースを取得するクラス。
|
BasicLogFormatter.UserIdItem |
ユーザIDを取得するクラス。
|
BasicLogger |
Logger の基本実装クラス。 |
BasicLoggerFactory |
LoggerFactory の基本実装クラス。フレームワーク実装の設定は、 LoggerManager が読み込むプロパティファイルに記述する。プロパティファイルの設定は、システムプロパティを使用して同じキー名に値を指定することで上書きすることができる。 プロパティファイルの記述ルールを下記に示す。 writerNames 使用する全ての LogWriter の名称。必須。複数指定する場合はカンマ区切り。 「”writer.” + <ここで指定した LogWriter の名称>」をキーのプレフィックスにして、LogWriter 毎の設定を行う。
writer.<LogWriter の名称>.className
LogWriter のクラス名。必須。LogWriter を実装したクラスのFQCNを指定する。
writer.<LogWriter の名称>.<プロパティ名>
LogWriter 毎のプロパティに設定する値。設定内容は、使用する LogWriter のJavadocを参照すること。
availableLoggersNamesOrder
使用する全てのLogger 設定の名称。必須。複数指定する場合はカンマ区切り。 「”loggers.” + <ここで指定された Logger 設定の名称>」をキーのプレフィックスに使用して、Logger 設定毎の設定を行う。
loggers.<Logger 設定の名称>.nameRegex
Logger 名とのマッチングに使用する正規表現。必須。正規表現は、 Logger 設定の対象となるLogger を絞り込むために使用する。Logger の取得時に指定されたLogger 名
(つまりLoggerManager#get メソッドの引数に指定されたLogger 名)に対してマッチングを行う。
logger.<Logger 設定の名称>.level
LogLevel の名称。必須。LogLevel の名称を指定する。ここで指定したレベル以上のログを全て出力する。 logger.< Logger 設定の名称>.writerNames
LogWriter の名称。必須。複数指定する場合はカンマ区切り。 ここで指定した全ての LogWriter に対してログの書き込みを行う。
availableLoggersNamesOrderプロパティは、記述順に意味があるので注意すること。Logger の取得では、ログ出力を行うクラスが指定したLogger 名に対して、
ここに記述した順番でLogger のマッチングを行い、最初にマッチしたLogger を返す。そのため、availableLoggersNamesOrderプロパティは、より限定的な正規表現を指定した Logger から順に記述すること。初期処理完了後に、各 LogWriter に対して、出力されるログレベルの書き込みを行う。初期処理完了後の出力例を下記に示す。 |
FileLogWriter |
ファイルにログを書き込むクラス。
FileLogWriterクラスの特徴を下記に示す。 ログフォーマッタを設定で指定できる。 ログファイルが指定サイズに達したら、出力ファイルを自動で切り替える。 初期処理と終了処理、ログファイルの切り替え時に、書き込み先のログファイルにINFOレベルでメッセージを出力する。 本クラスでは、ファイルへのログ書き込みに BufferedOutputStream を使用する。出力バッファのサイズは設定で変更できる。 書き込み処理では、書き込み後にすぐにフラッシュし、書き込んだ内容をファイルに反映する。 プロパティファイルの記述ルールを下記に示す。 filePath 書き込み先のファイルパス。必須。 encoding 書き込み時に使用する文字エンコーディング。オプション。 指定しなければシステムプロパティ(file.encoding)から取得した文字エンコーディング。 outputBufferSize 出力バッファのサイズ。オプション。 単位はキロバイト。1000バイトを1キロバイトと換算する。1以上を指定する。指定しなければ8KB。 maxFileSize 書き込み先ファイルの最大サイズ。オプション。 単位はキロバイト。1000バイトを1キロバイトと換算する。指定しなければ自動切替なし。 指定値が解析可能な整数値(Long.parseLong)でない場合は自動切替なし。 指定値が0以下の場合は自動切替なし。 古いログファイル名は、<通常のファイル名>.yyyyMMddHHmmssSSS.old。 本クラスでは、初期処理と終了処理、ログファイルの切り替え時に、書き込み先のログファイルにINFOレベルでメッセージを出力する。 |
LogContext |
ログ出力に必要な情報を保持するクラス。
スレッド名、ユーザID、リクエストIDは、スレッドに紐付く値をクラスの内部で設定する。 |
LogLevelLabelProvider | |
LogWriterSupport |
LogWriter の実装をサポートするクラス。このクラスでは、下記の機能を提供する。 LogLevel に応じた出力制御
LogFormatter を使用したログのフォーマット
上記の機能は、プロパティファイルに設定を記述して使用する。プロパティファイルの記述ルールを下記に示す。 writer.< LogWriter の名称>.level
LogLevel の名称。オプション。LogLevel の名称を指定する。ここで指定したレベル以上のログを全て出力する。 指定がない場合はレベルに応じた出力制御を行わず、全てのレベルのログを出力する。 writer.< LogWriter の名称>.formatter.className
LogWriter で使用するLogFormatter のクラス名。LogFormatter を実装したクラスのFQCNを指定する。
指定がない場合はBasicLogFormatter を使用する。
writer.<LogWriter の名称>.formatter.<プロパティ名>
LogFormatter 毎のプロパティに設定する値。設定内容は、使用する LogFormatter のJavadocを参照すること。
|
ObjectSettings |
ログ出力機能の設定からオブジェクトに対する設定を抜き出して保持するクラス。
|
StandardOutputLogWriter |
標準出力にログを書き込むクラス。
開発時にコンソール上で出力されたログを確認する場合などに使用できる。 |
SynchronousFileLogWriter |
ロックファイルを用いて排他制御を行いながらファイルにログを書き込むクラス。
|
Enum | Description |
---|---|
LogLevel |
ログレベルを表す列挙型。
本フレームワークにおけるログレベルは、FATAL>ERROR>WARN>INFO>DEBUG>TRACEの6段階とし、FATALからTRACEに向かって順にレベルが低くなる。 レベルに応じた出力制御では、指定されたレベル以上のログを全て出力する。 例えば、WARNレベルが指定された場合は、FATALレベル,ERRORレベル,WARNレベルで出力を指示しているログのみ出力する。 ログレベルの定義を下記に示す。 下記を参考にプロジェクト毎にログレベルの使用方法を決定すること。 FATAL アプリケーションの継続が不可能になる深刻な問題が発生したことを示す。 監視が必須で即通報および即対応が必要となる。 通常は、運用監視体制と密接に関わるため、個別アプリケーションではなくフレームワークで出力する。 ERROR アプリケーションの継続に支障をきたす問題が発生したことを示す。 監視が必須であるが、通報および対応にFATALレベルほどの緊急性がない。 通常は、運用監視体制と密接に関わるため、個別アプリケーションではなくフレームワークで出力する。 WARN すぐには影響を与えないが、放置しておくとアプリケーションの継続に支障をきたす問題になる恐れがある事象が発生したことを示す。 できれば監視した方がよいが、ERRORレベルほどの重要性がない。 通常は、運用監視体制と密接に関わるため、個別アプリケーションではなくフレームワークで出力する。 INFO 本番運用時にアプリケーションの情報を出力するログレベル。 アクセスログや統計ログが該当する。 通常は、運用監視体制と密接に関わるため、個別アプリケーションではなくフレームワークで出力する。 ログファイルのサイズが肥大化しないよう出力内容を設計する。 DEBUG 開発時にデバッグ情報を出力するログレベル。 SQLログや性能ログが該当する。 本番運用時は、ログファイルのサイズが肥大化するため出力してはならない。 TRACE 開発時にデバッグ情報より、さらに細かい情報を出力したい場合に使用するログレベル。 本番運用時は、ログファイルのサイズが肥大化するため出力してはならない。 |