39.3.5 ログのフォーマット
稼働ログ,保守ログ,例外ログおよび通信ログのフォーマットについて説明します。
(1) 稼働ログと保守ログのフォーマット
稼働ログおよび保守ログの出力項目と出力内容を次の表に示します。
項目 |
出力内容 |
---|---|
番号 |
トレースコードの通番(4桁)です。0000から始まり,9999まで行くと,0000に戻ります。 |
日付 |
出力時の日付(yyyy/mm/dd形式) |
時刻 |
出力時の時刻(hh:mm:ss.nnn形式) |
アプリケーション名 |
|
プロセス識別子 |
プロセス識別子(16進数) |
スレッド識別子 |
スレッド識別子(16進数) |
メッセージID |
メッセージID |
メッセージ種別 |
メッセージ種別
|
メッセージテキスト |
メッセージの本体 |
CRLF |
レコード終端記号 |
(2) 例外ログと通信ログのフォーマット
例外ログと通信ログの出力項目と出力内容を次の表に示します。
項目 |
出力内容 |
---|---|
日付 |
出力時の日付(yyyy/mm/dd形式) |
時刻 |
出力時の時刻(hh:mm:ss形式) |
Sourceクラス名 |
ログを発行したクラス名 |
レベル |
ログの重要度 |
メッセージ |
メッセージの本体 |
JAX-WS機能の通信ログの出力例を次に示します。
2008/10/14 13:09:44 com.cosminexus.xml.ws.transport.http.client.HttpTransportPipe process 情報: KDJW30011-I http client message ---[HTTP request]--- SOAPAction: "" Content-Type: text/xml;charset="utf-8" X-hitachi-rootAp: MTgxNDczMTYyLzE2ODgvMC84MDI= X-hitachi-clientAp: MTgxNDczMTYyLzE2ODgvMC84MDI= Accept: text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 <?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:jaxWsTest1 xmlns:ns2="http://example.com/sample"><information>Invocation test.</information><count>1003</count></ns2:jaxWsTest1></S:Body></S:Envelope> 2008/10/14 13:09:45 com.cosminexus.xml.ws.transport.http.client.HttpTransportPipe process 情報: KDJW30012-I http client message ---[HTTP response 200]--- HTTP/1.1 200 OK Keep-alive: timeout=3, max=100 Date: Tue, 14 Oct 2008 04:09:44 GMT Content-type: text/xml;charset=utf-8 Connection: Keep-Alive Transfer-encoding: chunked Server: Cosminexus HTTP Server <?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:jaxWsTest1Response xmlns:ns2="http://example.com/sample"><return>We've got your #1003 message "Invocation test."! It's 2008.10.14 13:09:45 now. See ya!</return></ns2:jaxWsTest1Response></S:Body></S:Envelope>
JAX-RS機能の通信ログの出力例を次に示します。
-
サーバ側
Sep 10, 2011 7:57:48 PM com.cosminexus.jersey.api.container.filter.LoggingFilter filter INFO: KDJJ30013-I 1 * Server in-bound request 1 > POST http://sample.com/example/root/path%20value;matrix=matrix%20value?query=query%20value 1 > user-agent: Java/1.5.0_11 1 > host: sample.com 1 > accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 1 > connection: keep-alive 1 > content-type: application/x-www-form-urlencoded 1 > content-length: 19 1 > form=form%2520value Sep 10, 2011 7:57:48 PM com.cosminexus.jersey.api.container.filter.LoggingFilter$Adapter finish INFO: KDJJ30015-I 1 * Server out-bound response 1 < 200 1 < Content-Type: text/html 1 < matrix%20value path%20value form%20value query%20value
-
クライアント側
Aug 27, 2012 10:30:06 AM com.cosminexus.jersey.api.client.filter.LoggingFilter printRequest INFO: KDJJ30026-I 1 * Client out-bound request 1 > POST http://sample.com/example 1 > Content-Type: text/plain 1 > requestEntity Aug 27, 2012 10:30:06 AM com.cosminexus.jersey.api.client.filter.LoggingFilter printResponse INFO: KDJJ30027-I 1 * Client in-bound response 1 < 200 1 < Content-Type: text/html 1 < responseEntity
JAX-RS機能の場合,動作定義ファイルにプロパティを設定していなくても,次に示すサーブレット初期化パラメタと値をweb.xmlに含めることで,Webリソースを含むWebアプリケーションごとに,通信ログを出力するかどうかを設定できます。
項番 |
サーブレット初期化パラメタ |
値 |
動作 |
---|---|---|---|
1 |
com.sun.jersey.spi.container.ContainerRequestFilters |
com.cosminexus.jersey.api.container.filter.LoggingFilter |
HTTPリクエストの情報が通信ログに出力されます。 |
2 |
com.sun.jersey.spi.container.ContainerResponseFilters |
com.cosminexus.jersey.api.container.filter.LoggingFilter |
HTTPレスポンスの情報が通信ログに出力されます。 |
エンティティの情報の出力を抑止するかどうかも,Webリソースを含むWebアプリケーションごとに設定できます。サーブレット初期化パラメタと値を次に示します。
項番 |
サーブレット初期化パラメタ |
値 |
動作 |
---|---|---|---|
1 |
com.sun.jersey.config.feature.logging.DisableEntitylogging |
true |
エンティティの情報が通信ログに出力されません。 |
false |
エンティティの情報が通信ログに出力されます。 |
(3) 通信ログの文字エンコーディング
SOAPメッセージ(Webサービスの場合)やHTTPメッセージ(Webリソースの場合)の文字エンコーディングとは関係なく,通信ログには次に示す動作定義ファイルのプロパティで指定した文字エンコーディングが適用されます。デフォルトは,プラットフォーム依存のエンコーディングです。
-
com.cosminexus.jaxws.logger.runtime.transport.encodingプロパティ(Webサービスの場合)
-
com.cosminexus.jaxrs.logger.runtime.transport.encodingプロパティ(Webリソースの場合)
メッセージの文字エンコーディングと通信ログの文字エンコーディングが異なる場合,組み合わせによっては通信ログ内の一部の文字が不正になるおそれがあります。例えば,メッセージの文字エンコーディングがUTF-8,通信ログの文字エンコーディングがMS932の場合,メッセージ内にMS932に存在しない文字が含まれていると,その文字は通信ログ内で不正となります。そのため,WebサービスまたはWebリソース開発時には,使用できる文字コードまたは文字セットを規定して,WebサービスクライアントまたはWebリソースクライアントの開発者に通知することをお勧めします。
また,使用する機能によっても次の注意事項があります。
-
添付ファイル(wsi:swaRef形式,およびMTOM/XOP仕様形式)を送受信する場合,添付ファイルにはバイナリデータが含まれたり,異なる文字エンコーディング形式の文字列が含まれたりするため,ルートパートのSOAPエンベロープも含めて,通信ログの文字が不正になるおそれがあります。