規則ベース・パーサーのパーサー・コンポーネントの構成

前提条件:

パーサーの役割は、抽出で区切られたメッセージを取得し、 ストリング値と共通ベース・イベント属性とのマッピング・セットをビルドすることです。

パーサー・コンポーネントを構成するには、 パーサーの 2 つの実行レベルに対する規則を構成する必要があります。

グローバル処理に使う規則の構成

  1. アダプター構成エディターの左側のペインで、 「構成」>「コンテキスト・インスタンス」>「パーサー」と選択します。 右側のペインにパーサーの情報が表示されます。

    右側のペインにパーサー構成の詳細が表示される

  2. 説明」フィールドにパーサーの説明を入力します。
  3. ログ・レコードに、レコード内のエレメントを区切るセパレーター・トークンが入っている場合は、 「セパレーター・トークン」フィールドにそのトークンを入力します。 例えば、myapp アプリケーション・ログ・レコードの場合、 エレメントとエレメントの間のセパレーター・トークンはダブルスペースです。
    <March 14, 2004 10:25:21 EST>  application:myapp  severity:3  message:WARNING-file style.css missing
    セパレーター・トークンは、正規表現 [ ]{2} で指定することができます。
  4. ログ・レコードに名前と値のペアのパターンのエレメントが入っている場合は、 「指定トークン」フィールドに名前を値に関連付けるトークンを指定することができます。 上記と同じ例を使用すると、myapp ログ・レコードでは、 指定トークンはコロン : になります。

属性処理に使う規則の構成

パーサーの 2 番目の実行フェーズでは、特定の置換規則を適用して、 共通ベース・イベント属性に割り当てる値を識別します。

共通ベース・イベント属性の追加および構成

以下の共通ベース・イベント属性が必要です。

共通ベース・イベント属性の全リストについては、 共通ベース・イベント・モデルを参照してください。

  1. アダプター構成エディターの左側のペインで、 「構成」>「コンテキスト・インスタンス」>「パーサー」 >「共通ベース・イベント」と選択します。 右側のペインに共通ベース・イベントの情報が表示されます。
  2. 新規属性を追加するには、共通ベース・イベント・ノードを右マウス・ボタン・クリックし、 ポップアップ・メニューから追加する属性を選択します。 選択した属性が「共通ベース・イベント」ノードの下に作成されます。 下記の例では、msg 属性が追加されます。

    msg 属性が右側のペインに表示される

  3. 追加した属性を構成するには、その属性をクリックします。 属性の詳細が右側のペインに表示されます。
  4. 上記の例で、すべてのログ・レコードに msg 属性が含まれていない場合は、 「直前の一致置換をデフォルトとして使用する」チェック・ボックスを選択します。 これで、最後に一致したメッセージの値が msg 属性に割り当てられます。
  5. msg のデフォルト値を設定する場合は、 「デフォルト値」フィールドに値を入力します。 このデフォルト値は、置換規則が存在または一致せず、 「直前の一致置換をデフォルトとして使用する」チェック・ボックスが選択されていない場合、 または直前の一致する値が保管されていない場合にのみ使用されます。
  6. 上記のステップに従って、必要なすべての属性を続けて追加します。

属性置換規則の追加および構成

共通ベース・イベント属性に置換規則を追加するには、 「属性」>「追加」>「置換規則」と選択します。 置換規則の詳細がエディターの右側のペインに表示されます。

  1. ログ・レコードにトークンで区切られた名前と値のペアが入っている場合は、 「」フィールドを使用することができます。 名前と値のペアの値を抽出するには、atom $h('nameofNameValuePair') を使用します。
    例えば、myapp アプリケーションから同じログ・レコードを使用するとします。
    <March 14, 2004 10:25:21 EST>  application:myapp  severity:3  message:WARNING-file style.css missing
    セパレーター・トークンが []{2} で、指定トークンが : の場合、 メッセージを抽出するためのアトムは $h('message') になります。
    」フィールドのその他の応用については、 「桁」フィールドの使用のトピックを参照してください。
  2. 一致」には、レコード内で検索するパターンを指定します。 「桁」フィールドを指定した場合は、レコードの一部が検索されます。 それ以外の場合は、レコード全体で指定したパターンの検索が行われます。 このパターンの中で、括弧を使用して特定のデータをグループにまとめ、 「置換」フィールドで参照することができます。 パターンがレコード内のデータと一致すると、 この規則が適用される共通ベース・イベント属性に、 「置換」フィールドの値に基づいて値が割り当てられます。 空のままの場合は、規則が一致するものと見なされます。
    myapp ログ・レコードの例で、「桁」フィールドによって抽出したメッセージの値を突き合わせるには、 以下の正規表現を使用することができます。
    ^(¥w+)-(.*)
    この一致するパターンは 2 つのグループから成り立ちます。 最初のグループは、文字とそれに続くダッシュからなるセットです。 2 番目のグループは、ダッシュの後ろから、 「桁」フィールドの指定で定義されたメッセージ値の終わりまでのすべての値です。
  3. 置換」フィールドに、 一致の結果として共通ベース・イベント属性に割り当てる値を指定します。 値は、一致するパターンで定義されるグループを表すリテラル $1、$2 などを使用して、 一致したストリングから抽出することができます。
    myapp ログ・レコードの例で、warning の値を共通ベース・イベント msg 属性に割り当てる場合は、 置換を $2 として指定します。

    構文解析されるログ・レコードの例と、「フォーマッター結果」ビューに表示される結果

  4. 「桁」、「一致」、および「置換」フィールドと一致した値でカスタム構文解析ロジックを実行する場合は、 「置換拡張機能クラス」を使用することができます。 ユーザー・クラスは、汎用ログ・アダプターで実行するためには、 汎用ログ・アダプター・インターフェース
    classorg.eclipse.hyades.logging.adapter.parsers.ISubstitutionExtension
    を実装する必要があります。

  5. 時刻形式」フィールドを使用して、 creationTime 属性の置換規則を作成することができます。 このフィールドに、Java 時刻パターン・ストリングを指定します。 入力されたパターンは、日付を long 値として生成する java.text.SimpleDateFormat クラスを使用して 「桁」、「一致」、および「置換」フィールドと一致した値を構文解析する場合に使用されます。 この値を使用して、 共通ベース・イベントに必要な XML スキーマの dateTime 形式で日付のストリング値が生成されます。
    myapp ログ・レコードの例では、「時刻形式」規則は以下のようになります。

    Java の単純な日付形式クラスを使用した「時刻形式」フィールドのサンプル規則

  6. アダプター構成ファイルを保管して変更内容を適用します。
  7. 規則をテストするには、「アダプターの再実行「アダプターの再実行」アイコンのピクチャー をクリックしてアダプターを実行します。 結果が「フォーマッター結果 (Formatter Result)」ビューに表示されます。
  8. 次のイベントの表示「次のイベントの表示」アイコンのピクチャー アイコンをクリックし、 作成した規則を使用して生成された共通ベース・イベント属性を表示します。

注: Java の単純な日付形式について詳しくは、 javadoc (java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html) を参照してください。

パーサー規則が完了したら、アダプター構成ファイルのアウトプッター・コンポーネントを構成することができます。

関連概念
Hyades 汎用ログ・アダプターの概説
共通ベース・イベント・フォーマットの仕様

関連タスク
ログ・パーサーの作成
規則ベース・アダプターの作成
アウトプッター・コンポーネントの構成

関連参照
アダプター構成ファイルの構造
アダプター構成エディター
正規表現グラマー
置換規則の例