7.1.1.2.5. メッセージングログの出力

メッセージングログは、 システム間メッセージング の中でメッセージ送受信時に出力する。 アプリケーションでは、ログ出力の設定を行うことにより出力する。

7.1.1.2.5.1. メッセージングログの出力方針

メッセージングログは、アプリケーション全体のログ出力を行うアプリケーションログに出力する。

メッセージングログの出力方針
ログレベル ロガー名
INFO MESSAGING

上記出力方針に対するログ出力の設定例を下記に示す。

log.propertiesの設定例
writerNames=appLog

# アプリケーションログの出力先
writer.appLog.className=nablarch.core.log.basic.FileLogWriter
writer.appLog.filePath=/var/log/app/app.log
writer.appLog.encoding=UTF-8
writer.appLog.maxFileSize=10000
writer.appLog.formatter.className=nablarch.core.log.basic.BasicLogFormatter
writer.appLog.formatter.format=$date$ -$logLevel$- $runtimeLoggerName$ [$executionId$] boot_proc = [$bootProcess$] proc_sys = [$processingSystem$] req_id = [$requestId$] usr_id = [$userId$] $message$$information$$stackTrace$

availableLoggersNamesOrder=MESSAGING,ROO

# アプリケーションログの設定
loggers.ROO.nameRegex=.*
loggers.ROO.level=INFO
loggers.ROO.writerNames=appLog

# メッセージングログの設定
loggers.MESSAGING.nameRegex=MESSAGING
loggers.MESSAGING.level=INFO
loggers.MESSAGING.writerNames=appLog
app-log.propertiesの設定例
# MessagingLogFormatter
#messagingLogFormatter.className=
#messagingLogFormatter.maskingChar=
#messagingLogFormatter.maskingPatterns=
# MOMメッセージング用フォーマット
messagingLogFormatter.sentMessageFormat=@@@@ SENT MESSAGE @@@@\
                                          \n\tthread_name    = [$threadName$]\
                                          \n\tmessage_id     = [$messageId$]\
                                          \n\tdestination    = [$destination$]\
                                          \n\tcorrelation_id = [$correlationId$]\
                                          \n\treply_to       = [$replyTo$]\
                                          \n\ttime_to_live   = [$timeToLive$]\
                                          \n\tmessage_body   = [$messageBody$]
messagingLogFormatter.receivedMessageFormat=@@@@ RECEIVED MESSAGE @@@@\
                                              \n\tthread_name    = [$threadName$]\
                                              \n\tmessage_id     = [$messageId$]\
                                              \n\tdestination    = [$destination$]\
                                              \n\tcorrelation_id = [$correlationId$]\
                                              \n\treply_to       = [$replyTo$]\
                                              \n\tmessage_body   = [$messageBody$]
# HTTPメッセージング用フォーマット
messagingLogFormatter.httpSentMessageFormat=@@@@ HTTP SENT MESSAGE @@@@\
                                              \n\tthread_name    = [$threadName$]\
                                              \n\tmessage_id     = [$messageId$]\
                                              \n\tdestination    = [$destination$]\
                                              \n\tcorrelation_id = [$correlationId$]\
                                              \n\tmessage_header = [$messageHeader$]\
                                              \n\tmessage_body   = [$messageBody$]
messagingLogFormatter.httpReceivedMessageFormat=@@@@ HTTP RECEIVED MESSAGE @@@@\
                                                  \n\tthread_name    = [$threadName$]\
                                                  \n\tmessage_id     = [$messageId$]\
                                                  \n\tdestination    = [$destination$]\
                                                  \n\tcorrelation_id = [$correlationId$]\
                                                  \n\tmessage_header = [$messageHeader$]\
                                                  \n\tmessage_body   = [$messageBody$]

7.1.1.2.5.2. 使用方法

7.1.1.2.5.2.1. メッセージングログの設定を行う

メッセージングログの設定は、 各種ログの設定を行う で説明したプロパティファイルに行う。

記述ルール

messagingLogFormatter.className
MessagingLogFormatter を実装したクラス。 差し替える場合に指定する。
messagingLogFormatter.maskingPatterns

メッセージ本文のマスク対象文字列を正規表現で指定する。 正規表現で指定された最初のキャプチャ部分(括弧で囲まれた部分)がマスク対象となる。

例えばパターンとして「<password>(.+?)</password>」と指定し、 実電文に「<password>hoge</password>」が含まれる場合、 出力される文字列は「<password>****</password>」となる。

複数指定する場合はカンマ区切り。 指定した正規表現は大文字小文字を区別しない。

messagingLogFormatter.maskingChar
マスクに使用する文字。デフォルトは’*’。
messagingLogFormatter.sentMessageFormat

MOM送信メッセージのログ出力に使用するフォーマット。

フォーマットに指定可能なプレースホルダ
スレッド名:$threadName$
メッセージID:$messageId$
送信宛先:$destination$
関連メッセージID:$correlationId$
応答宛先:$replyTo$
有効期間:$timeToLive$
メッセージボディの内容:$messageBody$ [1]
メッセージボディのヘキサダンプ:
 $messageBodyHex$ [1]
メッセージボディのバイト長:$messageBodyLength$
デフォルトのフォーマット
@@@@ SENT MESSAGE @@@@
    \n\tthread_name    = [$threadName$]
    \n\tmessage_id     = [$messageId$]
    \n\tdestination    = [$destination$]
    \n\tcorrelation_id = [$correlationId$]
    \n\treply_to       = [$replyTo$]
    \n\ttime_to_live   = [$timeToLive$]
    \n\tmessage_body   = [$messageBody$]
messagingLogFormatter.receivedMessageFormat

MOM受信メッセージのログ出力に使用するフォーマット。

フォーマットに指定可能なプレースホルダ
スレッド名:$threadName$
メッセージID:$messageId$
送信宛先:$destination$
関連メッセージID:$correlationId$
応答宛先:$replyTo$
有効期間:$timeToLive$
メッセージボディの内容:$messageBody$ [1]
メッセージボディのヘキサダンプ:
 $messageBodyHex$ [1]
メッセージボディのバイト長:$messageBodyLength$
デフォルトのフォーマット
@@@@ RECEIVED MESSAGE @@@@
    \n\tthread_name    = [$threadName$]
    \n\tmessage_id     = [$messageId$]
    \n\tdestination    = [$destination$]
    \n\tcorrelation_id = [$correlationId$]
    \n\treply_to       = [$replyTo$]
    \n\tmessage_body   = [$messageBody$]
messagingLogFormatter.httpSentMessageFormat

HTTP送信メッセージのログ出力に使用するフォーマット。

フォーマットに指定可能なプレースホルダ
スレッド名:$threadName$
メッセージID:$messageId$
送信先:$destination$
関連メッセージID:$correlationId$
メッセージボディの内容:$messageBody$ [1]
メッセージボディのヘキサダンプ:
 $messageBodyHex$ [1]
メッセージボディのバイト長:$messageBodyLength$
メッセージのヘッダ:$messageHeader$
デフォルトのフォーマット
@@@@ HTTP SENT MESSAGE @@@@
    \n\tthread_name    = [$threadName$]
    \n\tmessage_id     = [$messageId$]
    \n\tdestination    = [$destination$]
    \n\tcorrelation_id = [$correlationId$]
    \n\tmessage_header = [$messageHeader$]
    \n\tmessage_body   = [$messageBody$]
messagingLogFormatter.httpReceivedMessageFormat

HTTP受信メッセージのログ出力に使用するフォーマット。

フォーマットに指定可能なプレースホルダ
スレッド名:$threadName$
メッセージID:$messageId$
送信先:$destination$
関連メッセージID:$correlationId$
メッセージボディの内容:$messageBody$ [1]
メッセージボディのヘキサダンプ:
 $messageBodyHex$ [1]
メッセージボディのバイト長:$messageBodyLength$
メッセージのヘッダ:$messageHeader$
デフォルトのフォーマット
@@@@ HTTP RECEIVED MESSAGE @@@@
    \n\tthread_name    = [$threadName$]
    \n\tmessage_id     = [$messageId$]
    \n\tdestination    = [$destination$]
    \n\tcorrelation_id = [$correlationId$]
    \n\tmessage_header = [$messageHeader$]
    \n\tmessage_body   = [$messageBody$]
[1](1, 2, 3, 4, 5, 6, 7, 8)
  • $messageBody$: 電文をISO-8859-1固定でエンコードした結果を出力する。
  • $messageBodyHex$: $messageBody$の内容をヘキサダンプして出力する。
記述例
messagingLogFormatter.className=nablarch.fw.messaging.logging.MessagingLogFormatter
messagingLogFormatter.maskingChar=#
messagingLogFormatter.maskingPatterns=<password>(.+?)</password>,<mobilePhoneNumber>(.+?)</mobilePhoneNumber>

# MOMメッセージング用フォーマット
messagingLogFormatter.sentMessageFormat=@@@@ SENT MESSAGE @@@@\n\tthread_name    = [$threadName$]\n\tmessage_id     = [$messageId$]\n\tdestination    = [$destination$]\n\tcorrelation_id = [$correlationId$]\n\treply_to       = [$replyTo$]\n\ttime_to_live   = [$timeToLive$]\n\tmessage_body   = [$messageBody$]
messagingLogFormatter.receivedMessageFormat=@@@@ RECEIVED MESSAGE @@@@\n\tthread_name    = [$threadName$]\n\tmessage_id     = [$messageId$]\n\tdestination    = [$destination$]\n\tcorrelation_id = [$correlationId$]\n\treply_to       = [$replyTo$]\n\tmessage_body   = [$messageBody$]

# HTTPメッセージング用フォーマット
messagingLogFormatter.httpSentMessageFormat=@@@@ HTTP SENT MESSAGE @@@@\n\tthread_name    = [$threadName$]\n\tmessage_id     = [$messageId$]\n\tdestination    = [$destination$]\n\tcorrelation_id = [$correlationId$]\n\tmessage_header = [$messageHeader$]\n\tmessage_body   = [$messageBody$]
messagingLogFormatter.httpReceivedMessageFormat=@@@@ HTTP RECEIVED MESSAGE @@@@\n\tthread_name    = [$threadName$]\n\tmessage_id     = [$messageId$]\n\tdestination    = [$destination$]\n\tcorrelation_id = [$correlationId$]\n\tmessage_header = [$messageHeader$]\n\tmessage_body   = [$messageBody$]