この章では、開発システムでメッセージ ロギング機能を使用する方法について説明します。内容は次のとおりです。
メッセージ・ロギングではOracle WebLogic Server SIP Containerが受信したSIPとDiameterメッセージ(リクエストとレスポンスの両方)が記録されます。これには、ロギング・レベルをINFOレベル以上に設定する必要があります。開発環境でメッセージ・ログを使用して、外部のSIPリクエストとSIPレスポンスがどのように受信されるかチェックできます。アプリケーション・ログからSIPダイアログの識別可能な情報(Call-IDなど)を出力し、メッセージ・ログから関連するSIPメッセージを抽出することにより、HTTPサーブレットなどからのSIP呼出しをチェックすることもできます。
メッセージ・ロギングを有効にすると、Oracle WebLogic Server SIP Containerによって、各エンジン層サーバー・インスタンスに関連付けられた管理対象サーバー・ログ・ファイルにメッセージ・ログ・レコードがデフォルトで記録されます。「ログ・ファイル・ローテーションの構成」に示しているように、必要に応じてメッセージを個別の専用のログ・ファイルに記録できます。
メッセージ・ロギングの有効化と構成は、sipserver.xml構成ファイルにmessage-debug要素を追加することによって行います。Oracle WebLogic Server SIP Containerには、記録する情報を構成する方法が2通りあります。
あらかじめ定義されているロギング・レベル(terse、basic、またはfull)を指定する
指定された順序で、ログ・レコードに含めたいSIPメッセージの正確な部分を識別する
次の項では、sipserver.xmlファイルで要素を使用して、各メソッドのメッセージ・ロギング機能の構成を説明します。SipServerコンソール拡張ノードの「構成」->「メッセージのデバッグ」タブで管理コンソールを使用してこれらの要素を設定できます。
message-debug内のlevel要素(オプション)で、SIPの各リクエストとレスポンスについて記録する情報の定義済コレクションを指定します。次のレベルがサポートされています。
terse(簡潔) - domain設定、ロギング・サーブレット名、ロギングlevelおよびメッセージが受信メッセージかどうかのみを記録します。
basic - terseの項目に加えて、SIPメッセージのステータス、Reason-Phrase(説明句)、レスポンスまたはリクエストのタイプ、SIPメソッド、FromヘッダーおよびToヘッダーがログに記録されます。
full - basicの項目に加え、すべてのSIPメッセージ・ヘッダー、タイム・スタンプ、プロトコル、リクエストURI、リクエスト・タイプ、レスポンス・タイプ、コンテンツ・タイプおよびrawコンテンツがログに記録されます。
例7-1は、fullロギング・レベルを指定する構成エントリです。
Oracle WebLogic Server SIP Containerでは、各メッセージのログ・レコードの内容と順序をカスタマイズすることもできます。カスタム・ログ・レコードを構成するには、format要素を使って、ログ・レコードのpatternと各レコードに記録する1つまたは複数のtokenを定義する必要があります。
| 
 注意: message-debug内にformat要素と<level>full</level>要素(または未定義のlevel要素)を一緒に指定すると、Oracle WebLogic Server SIP Containerはformatエントリを無視して「full」のメッセージ・デバッグを使用します。formatエントリは、message-debugの「terse」または「basic」レベルと組み合せて使用できます。 | 
表7-1に、format要素内でネストして使用される要素を示します。
表7-1 ネストされるフォーマット要素
| パラメータ名 | パラメータ値の説明 | 
|---|---|
| 
 
  | 
 メッセージ・ログ・エントリをフォーマットするため使用したパターンを指定します。このフォーマットは、1つまたは複数の整数を「{」と「}」で囲んで指定することにより定義されます。各整数は、  | 
| 
 
  | 
 ログ・レコードに含めるSIPメッセージの一部を識別する文字列トークン。表7-2では、利用可能な文字列トークンのリストを示します。必要に応じて複数の  | 
表7-2に、メッセージ・ログ・レコードに含める情報を指定するための文字列token値を示します。
| トークン | 説明 | 例またはタイプ | 
|---|---|---|
| 
 %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ファイルについては、「メッセージ・ログ構成と出力の例」を参照してください。
デフォルトでは、Oracle WebLogic Server SIP Containerは、テキストまたはapplication/sdpのContent-Type値を持つSIPメッセージのコンテンツをログするために、文字列フォーマット(UTF-8エンコーディング)を使用します。他のすべてのContent-Type値では、文字列セットが指定されている場合、Oracle WebLogic Server SIP Containerはメッセージのcharsetパラメータに指定した文字列セットを使用してメッセージのコンテンツをログします。charsetパラメータが指定されていない場合、またはcharset値が無効かサポートされていない場合、Oracle WebLogic Server SIP Containerは、メッセージをログする前にメッセージ・コンテンツを暗号化するためにBase-64エンコーディングを使用します。
こうした状況でメッセージのコンテンツの暗号化を回避するには、sipserver.xmlのstring-rep要素を使用してString-representable Content-Type値のリストを指定します。string-rep要素は1つまたは複数の一致するcontent-type要素を持つことができます。ログされたメッセージが構成されたcontent-type要素のいずれかに一致する場合、Oracle WebLogic Server SIP Containerは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メッセージのメッセージ・ログ・エントリは、デフォルトではメインOracle WebLogic Server SIP Containerのログ・ファイルに格納されています。必要に応じて、専用のログ・ファイルにメッセージを格納できます。別々のファイルを使用すると、メッセージ・ログの場所を簡単に特定でき、しかも記録されたデータをより適切に管理できるよう、Oracle WebLogic Server SIP Containerのログ・ローテーション機能を使用できます。
ログ・ローテーションは、sipserver.xmlにあるメインのmessage-debug要素の中にネストされたいくつかの要素を使用して構成されます。この項で説明されている他のXML要素と同様に、SIP Server管理コンソール拡張の「構成」->「メッセージのデバッグ」タブを使用して値を構成できます。
表7-3では、各要素を説明しています。独立したロギングとログ・ローテーションを開始するためには、サーバーの再起動が必要です。
表7-3 ログ・ローテーション構成のXML要素
| 要素 | 説明 | 
|---|---|
| 
 
  | 
 メッセージ・デバッグのログ・メッセージの格納に個別のログ・ファイルを使用するかどうかを決定します。デフォルトでは、この要素はfalseに設定されており、メッセージは一般的なログ・ファイルに記録されます。  | 
| 
 
  | 
 最小サイズ(KB)を構成し、その後サーバーがログ・メッセージを別のファイルに自動的にローテーションします。この値は、  | 
| 
 
  | 
 メッセージを格納するためにログ・ファイル名を定義します。デフォルトでは、ログ・ファイルは  | 
| 
 
  | 
 古いログ・メッセージを別のファイルに移動するための基準を構成します。この要素には、以下のいずれかの値を取ります。 
  | 
| 
 
  | 
 サーバーがログのローテーション後に格納されたログ・ファイルの総数を制限するかどうかを指定します。デフォルトでは、この要素は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>