この章では、開発システムにおけるメッセージ ロギング機能の使用方法を説明します。以下の節で構成されています。
メッセージ ロギングでは OWLCS が受信した SIP と Diameter メッセージ (リクエストと応答の両方) が記録されます。これには、ロギング レベルを INFO レベル以上に設定する必要があります。開発環境でメッセージ ログを使用して、外部の SIP リクエストと SIP 応答がどのように受信されるかチェックすることができます。アプリケーション ログから SIP ダイアログの識別可能な情報 (Call-ID など) を出力し、メッセージ ログから関連する SIP メッセージを抽出することにより、HTTP サーブレットなどからの SIP 呼び出しをチェックすることもできます。
メッセージ ロギングを有効にすると、OWLCS によって、各エンジン層サーバ インスタンスに関連付けられた管理対象サーバ ログ ファイルにメッセージ ログ レコードがデフォルトで記録されます。「ログ ファイル ローテーションのコンフィグレーション」に示しているように、必要に応じてメッセージを個別の専用のログ ファイルに記録することができます。
メッセージ ロギングの有効化とコンフィグレーションは、sipserver.xml コンフィグレーション ファイルに message-debug 要素を追加することによって行います。OWLCS には、記録する情報をコンフィグレーションする方法が 2 通りあります。
あらかじめ定義されているロギング レベル (terse、basic、または full) を指定する
指定された順序で、ログ レコードに含めたい SIP メッセージの正確な部分を識別する
以下の節では、sipserver.xml ファイルで要素を使用して、各メソッドのメッセージ ロギング機能のコンフィグレーションを説明します。SipServer コンソール拡張ノードの [コンフィグレーション|メッセージ デバッグ] タブで Administration Console を使用してこれらの要素を設定することができます。
message-debug 内の level 要素 (省略可能) で、SIP の各リクエストと応答について記録する情報の定義済みコレクションを指定します。以下のレベルがサポートされています。
terse (簡潔) - domain 設定、ロギング サーブレット名、ロギング level、およびメッセージが受信メッセージかどうかのみを記録します。
basic - terse の項目に加えて、SIP メッセージの状態、Reason-Phrase (説明句)、応答またはリクエストのタイプ、SIP メソッド、From ヘッダ、および To ヘッダがログに記録されます。
full - basic の項目に加え、すべての SIP メッセージ ヘッダ、タイムスタンプ、プロトコル、リクエスト URI、リクエスト タイプ、応答タイプ、コンテンツ タイプ、および生のコンテンツがログに記録されます。
例 7-1 は、full ロギング レベルを指定するコンフィグレーション エントリです。
OWLCS では、各メッセージのログ レコードの内容と順序をカスタマイズすることもできます。カスタム ログ レコードをコンフィグレーションするには、format 要素を使って、ログ レコードの pattern と各レコードに記録する 1 つまたは複数の token を定義する必要があります。
| 注意 :message-debug 内に format 要素と <level>full</level> 要素 (または未定義の level 要素) を一緒に指定すると、OWLCS は format エントリを無視して「full」のメッセージ デバッグを使用します。format エントリは、message-debug の「terse」または「basic」レベルと組み合わせて使用できます。 | 
表 7-1 に、format 要素内でネストして使用される要素を示します。
表 7-1 ネストされるフォーマット要素
| パラメータ名 | パラメータ値の説明 | 
|---|---|
| 
 | メッセージ ログ エントリをフォーマットするため使用したパターンを指定します。このフォーマットは、1 つまたは複数の整数を「{」と「}」で囲んで指定することにより定義されます。各整数は、 | 
| 
 | ログ レコードに含める SIP メッセージの一部を識別する文字列トークン。表 7-2 では、利用可能な文字列トークンのリストを示します。必要に応じて複数の  | 
表 7-2 に、メッセージ ログ レコードに含める情報を指定するための文字列 token 値を示します。
表 7-2 メッセージ ログ レコード用の利用可能なトークン
| トークン | 説明 | 例またはタイプ | 
|---|---|---|
| %call_id | Call-ID ヘッダ。転送のときは空白。 | 43543543 | 
| %content | raw コンテンツ。 | バイト配列 | 
| %content_length | コンテンツ長。 | 文字列値 | 
| %content_type | コンテンツ タイプ。 | 文字列値 | 
| %cseq | CSeq ヘッダ。転送のときは空白。 | INVITE 1 | 
| %date | メッセージの受信日付。「yyyy/MM/dd」の形式。 | 2004/05/16 | 
| %from | From ヘッダ (全部)。転送のときは空白。 | sip:foo@oracle.com;tag=438943 | 
| %from_addr | From ヘッダのアドレス部分。 | foo@oracle.com | 
| %from_tag | From ヘッダのタグ パラメータ。転送のときは空白。 | 12345 | 
| %from_uri | From ヘッダの SIP URI 部分。転送のときは空白。 | sip:foo@oracle.com | 
| %headers | 2 要素配列に格納されるメッセージ ヘッダのリスト。最初の要素はヘッダの名前で、2 番目の要素はヘッダの全値のリストです。 | ヘッダのリスト | 
| %io | メッセージが受信メッセージかどうか。 | TRUE | 
| %method | SIP メソッドの名前。転送時に呼び出すメソッド名を記録します。 | INVITE | 
| %msg | サマリ Call ID | 文字列値 | 
| %mtype | 受信のタイプ。 | SIPREQ | 
| %protocol | 使用プロトコル。 | UDP | 
| %reason | 応答理由。 | OK | 
| %req_uri | リクエスト URI。このトークンは SIP リクエストについてのみ有効です。 | sip:foo@oracle.com | 
| %status | 応答ステータス。 | 200 | 
| %time | メッセージの受信時刻。「HH:mm:ss」の形式。 | 18:05:27 | 
| %timestampmillis | ミリ秒単位のタイムスタンプ。 | 9295968296 | 
| %to | To ヘッダ (全部)。転送のときは空白。 | sip:foo@oracle.com;tag=438943 | 
| %to_addr | To ヘッダのアドレス部分。 | foo@oracle.com | 
| %to_tag | To ヘッダのタグ パラメータ。転送のときは空白。 | 12345 | 
| %to_uri | To ヘッダの SIP URI 部分。転送のときは空白。 | sip:foo@oracle.com | 
「メッセージ ログ コンフィグレーションと出力の例」では、2 つのトークンを使ってカスタム ログ レコードを定義したサンプルの sipserver.xml ファイルを紹介しています。
デフォルトでは、OWLCS は、テキストまたはapplication/sdp の Content-Type 値を持つ SIP メッセージのコンテンツをログするために、文字列フォーマット (UTF-8 エンコーディング) を使用します。他のすべての Content-Type 値では、文字列セットが指定されている場合、OWLCS はメッセージの charset パラメータに指定した文字列セットを使用してメッセージのコンテンツをログします。charsetパラメータが指定されていない場合、または charset 値が無効かサポートされていない場合、OWLCS は、メッセージをログする前にメッセージ コンテンツを暗号化するために Base-64 エンコーディングを使用します。
こうした状況でメッセージのコンテンツの暗号化を回避するには、sipserver.xml の string-rep 要素を使用して String-representable Content-Type 値のリストを指定します。string-rep 要素は 1 つまたは複数の一致する content-type 要素を持つことができます。ログされたメッセージがコンフィグレーションされた content-type 要素のいずれかに一致する場合、OWLCS は charset パラメータが含まれているか否かにかかわらず、UTF-8 エンコーディング を使用して文字列フォーマットにコンテンツをログします。
| 注意 :text/* または application/sdp のコンテンツ タイプはデフォルトとして文字列フォーマットにログされているため、指定する必要はありません。 | 
例 7-2 に、text/* および application/sdp コンテンツに加え、追加の 3 つの Content-Type 値に対して文字列コンテンツをログする message-debug コンフィグレーションをサンプルとして示します。
例 7-3 は、sipserver.xml でのメッセージ ログ コンフィグレーションの例を示します。例 7-4「メッセージ ログ出力の例」には、管理対象サーバのログ ファイルから出力の例を示します。
例 7-3 sipserver.xml でのメッセージ ログ コンフィグレーションの例
<message-debug>
   <format>
      <pattern>{0} {1}</pattern>
      <token>%headers</token>
      <token>%content</token>
   </format>
</message-debug>
例 7-4 メッセージ ログ出力の例
####<Aug 10, 2005 7:12:08 PM PDT> <Info> <WLSS.Trace> <jiri.bea.com> <myserver> <ExecuteThread: '11' for queue: 'sip.transport.Default'> <<WLS Kernel>> <> <BEA- 331802> <SIP Tracer: logger Message: To: sut <sip:invite@10.32.5.230:5060> <mailto:sip:invite@10.32.5.230:5060> Content-Length: 136 Contact: user:user@10.32.5.230:5061 CSeq: 1 INVITE Call-ID: 59.3170.10.32.5.230@user.call.id From: user <sip:user@10.32.5.230:5061> <mailto:sip:user@10.32.5.230:5061> ;tag=59 Via: SIP/2.0/UDP 10.32.5.230:5061 Content-Type: application/sdp Subject: Performance Test Max-Forwards: 70 v=0 o=user1 53655765 2353687637 IN IP4 127.0.0.1 s=- c=IN IP4 127.0.0.1 t=0 0 m=audio 10000 RTP/AVP 0 a=rtpmap:0 PCMU/8000 > ####<Aug 10, 2005 7:12:08 PM PDT> <Info> <WLSS.Trace> <jiri.bea.com> <myserver> <ExecuteThread: '11' for queue: 'sip.transport.Default'> <<WLS Kernel>> <> <BEA- 331802> <SIP Tracer: logger Message: To: sut <sip:invite@10.32.5.230:5060> <mailto:sip:invite@10.32.5.230:5060> Content-Length: 0 CSeq: 1 INVITE Call-ID: 59.3170.10.32.5.230@user.call.id Via: SIP/2.0/UDP 10.32.5.230:5061 From: user <sip:user@10.32.5.230:5061> <mailto:sip:user@10.32.5.230:5061> ;tag=59 Server: Oracle WebLogic Communications Server 10.3.1.0 >
SIP と Diameter メッセージのメッセージ ログ エントリは、デフォルトではメイン OWLCS のログ ファイルに格納されています。必要に応じて、専用のログ ファイルにメッセージを格納することができます。別々のファイルを使用すると、メッセージ ログの場所を簡単に特定でき、しかも記録されたデータをより適切に管理できるよう、OWLCS のログ ローテーション機能が使用できます。
ログ ローテーションは、sipserver.xml にあるメインの message-debug 要素の中にネストされたいくつかの要素を使用してコンフィグレーションされます。この節で説明されている他の XML 要素と同様に、SIP Server Administration Console 拡張の [コンフィグレーション|メッセージ デバッグ] タブを使用して値をコンフィグレーションすることができます。
表 7-3 では、各要素を説明しています。独立したロギングとログ ローテーションを開始するためには、サーバの再起動が必要です。
表 7-3 ログ ローテーション コンフィグレーションの XML 要素
| 要素 | 説明 | 
|---|---|
| 
 | メッセージ デバッグのログ メッセージの格納に個別のログ ファイルを使用するかどうかを決定します。デフォルトでは、この要素は false に設定されており、メッセージは一般的な ログ ファイルに記録されています。 | 
| 
 | 最低減のサイズをコンフィグレーションし、その後サーバがログ メッセージを別のファイルに自動的にローテーションします。 | 
| 
 | メッセージを格納するためにログ ファイル名を定義します。デフォルトでは、ログ ファイルは  | 
| 
 | 古いログ メッセージを別のファイルに移動するための基準をコンフィグレーションします。この要素には、以下のいずれかの値を取ります。 
 | 
| 
 | サーバがログのローテーション後に格納されたログ ファイルの総数を制限するかどうかを指定します。デフォルトでは、この要素は false に設定されています。 | 
| 
 | 
 | 
| 
 | サーバがサーバの起動時にログ ファイルをローテーションするかどうかを決定します。 | 
| 
 | ローテーションされたログ ファイルを格納するディレクトリをコンフィグレーションします。デフォルトでは、アクティブなログ ファイルとして、同一ディレクトリ内でローテーションされたログ ファイルを格納します。 | 
| 
 | 
 | 
| 
 | 間隔を時間単位で指定してからログ ファイルをローテーションします。 | 
| 
 | ログ ファイル エントリで日付の設定に使用するパターンを指定します。要素の値は  | 
例 7-5 にログ ローテーションを使用する message-debug コンフィグレーションの例を示します。
例 7-5 ログ ローテーション コンフィグレーションの例
<?xml version='1.0' encoding='UTF-8'?> <sip-server xmlns="http://www.bea.com/ns/wlcp/wlss/300" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls"> <message-debug> <logging-enabled>true</logging-enabled> <file-min-size>500</file-min-size> <log-filename>sip-messages.log</log-filename> <rotation-type>byTime</rotation-type> <number-of-files-limited>true</number-of-files-limited> <file-count>5</file-count> <rotate-log-on-startup>false</rotate-log-on-startup> <log-file-rotation-dir>old_logs</log-file-rotation-dir> <rotation-time>00:00</rotation-time> <file-time-span>20</file-time-span> <date-format-pattern>MMM d, yyyy h:mm a z</date-format-pattern> </message-debug> </sip-server>