配置規則型剖析器的剖析器元件

剖析器的角色是採擷取器定界的訊息來建置一組字串值至 Common Base Event 屬性的對映。

必備條件:

如果要配置剖析器元件,您必須配置兩個剖析器執行層次的規則:

廣域處理

剖析器元件中的廣域處理會執行一組廣域正規表示式規則, 並針對擷取器提供的訊息結果,套用這些規則。

如果要配置剖析器元件的廣域處理規則,請遵循下列步驟:

  1. 在「配接器配置編輯器」的左窗格中,展開配置 > 環境定義實例 > 剖析器節點。 這時右窗格會顯示剖析器資訊。

    右窗格顯示的剖析器配置詳細資料

  2. 說明欄位中,輸入剖析器的說明。
  3. 如果日誌記錄包含在記錄內為元素定界的分隔字元記號,請在分隔字元記號欄位中輸入記號。 比方說,如果是 myapp 應用程式日誌記錄,元素之間的分隔字元記號就是兩個空格:
    <March 14, 2004 10:25:21 EST>  application:myapp  severity:3  message:WARNING-file style.css missing
    分隔字元記號可用正規表示式 [ ]{2} 來指定。
  4. 如果日誌記錄包含名稱值配對型樣的元素,您可以指定建立名稱與指定記號欄位值之關聯性的記號。 當使用上面的相同範例時,在 myapp 日誌記錄中,指定記號是一個冒號 :

附註: 在廣域處理階段期間所剖析的值,其前後空白字元 會被移除。因此,寫入使用位置值的替代規則時, 可以假設值的前後沒有空白字元。

屬性處理

剖析器第二階段的執行會套用特定替代規則來識別要指派給 Common Base Event 屬性的值。

以下是必要的 Common Base Event 屬性:

如果需要完整的 Common Base Event 元素清單及其相關聯的屬性,請參閱 Common Base Event 模型

新增和配置元素與屬性

如果要新增和配置元素,請執行下列步驟:

  1. 在配接器配置編輯器的左窗格中,選取配置 > 環境定義實例 > 剖析器 > Common Base Event。 這時右窗格會顯示 Common Base Event 資訊。
  2. 如果要新增元素,請用滑鼠右鍵按一下 Common Base Event 節點,從蹦現功能表中選取要新增的元素。 元素會建立在 Common Base Event 節點之下。
    在下列範例中, 已新增狀況元素。

    狀況屬性顯示在右窗格

  3. 如果要配置您剛剛新增的元素,請按一下該元素。元素內容會顯示在右窗格中。
  4. 母項所需勾選框可讓您指定這個元素是否要包含一個有效值,才能讓母項元素有效。 在上述範例中,如果為狀況元素選取勾選框,則表示向剖析器指出 Common Base Event 物件必須包含一個有效的狀況元素。 在處理期間,如果狀況元素傳回空值,剖析器便不會處理 Common Base Event 物件的任何其他子元素, 因為剖析器已經知道這個 Common Base Event 物件是無效的,因為所需子元素傳回一個無效值。
  5. 子項選擇勾選框可讓您指定有效子項屬性或元素傳回有效值時,是否要停止這個元素的處理程序。 例如,考量上方所顯示的狀況元素。該元素有三個各有子樹狀結構的子元素。 如果為狀況元素選取了子項選取勾選框,則會在傳回有效值的第一個子項子樹狀結構中,停止剖析作業。這個特性明顯提升了剖析具有多個子元素或屬性之元素的效能。
    附註:categoryName 是狀況的必要屬性,但如果其中一個狀況類型元素傳回值,「通用日誌配接器」就會將 categoryName 設定成適當的值。

如果要新增和配置屬性,請執行下列步驟:

  1. 在配接器配置編輯器的左窗格中,選取配置 > 環境定義實例 > 剖析器 > Common Base Event。 這時右窗格會顯示 Common Base Event 資訊。
  2. 如果要新增屬性,請用滑鼠右鍵按一下 Common Base Event 節點,從蹦現功能表中選取要新增的屬性。 屬性會建立在 Common Base Event 節點之下。
    下列範例顯示新增在 Common Base Event 節點之下的 msg 屬性。

    右窗格顯示 msg 屬性

  3. 按一下該屬性,以在右窗格顯示屬性內容。
  4. 當使用上述範例時,如果日誌記錄沒有全都包含 msg 屬性,您可以選取利用上一個相符替代項作為預設值勾選框。 這會將上一個相符的訊息指派給 msg 屬性。
  5. 如果您要設定 msg 的預設值,請在預設值欄位輸入值。 只有在替代規則不存在或不符合,且沒有勾選利用上一個相符替代項作為預設值,或如果勾選了,但並未儲存任何先前相符的值時,才能使用這個預設值。
  6. 屬性的母項所需勾選框可讓您指定這個屬性是否要包含一個有效值,才能讓母項元素有效。

新增和配置屬性替代規則

如果要將替代規則新增至 Common Base Event 屬性中,請選取屬性 > 新增 > 替代規則。 替代規則詳細資料會顯示在編輯器的右窗格中。

  1. 當日誌記錄包含記號所定界的名稱值配對時,可以使用位置欄位。 名稱值配對的值可以利用 $h('nameofNameValuePair') 表示式來擷取。
    比方說,當使用 myapp 應用程式的相同日誌記錄:
    <March 14, 2004 10:25:21 EST>  application:myapp  severity:3  message:WARNING-file style.css missing
    以及分隔字元記號 = []{2} 和指定記號 = : ,用來擷取訊息的表示式就是 $h('message')。
    關於位置欄位的其他應用,請參閱「位置」欄位用法主題。
  2. 比對指定記錄中所要搜尋的型樣。 如果指定了「位置」欄位,就會搜尋一部分的記錄,否則將會搜尋整個記錄來尋找指定的型樣。 在這個型樣內,可用替代欄位中所能參照的括號,將某些資料分組在一起。 如果型樣符合記錄中的資料,這個規則所適用的 Common Base Event 屬性將會取得基於「替代」欄位的值。 如果相符欄位保留空白,規則會視為相符。
    myapp 日誌記錄範例中,如果要比對位置欄位所擷取的訊息值,您可以使用下列正規表示式:
    ^(\w+)-(.*)
    這個比對型樣包含兩個群組。 第一個群組是破折號之前的單字字元集。 第二個群組是依照「位置」欄位規格所定義,在破折號之後到訊息值結尾的任何項目。
  3. 替代欄位是要作為相符項而指派給 Common Base Event 屬性的值。 這些值可利用代表比對型樣所定義之群組的 $1、$2 等文字,從比對的字串中擷取出來。
    myapp 日誌記錄範例中,如果您只要將警告的值指派給 Common Base Event msg 屬性,請將替代指定為 $2。

    剖析的日誌記錄範例以及格式製作器結果視圖所顯示的結果

  4. 如果您要在「位置」、「比對」和「替代」等欄位所比對的值上執行自訂剖析邏輯,您可以使用替代繼承類別。 使用者類別必須實作「通用日誌配接器」介面
    org.eclipse.hyades.logging.adapter.parsers.ISubstitutionExtension 
    通用日誌配接器才能夠執行它。

  5. 您可以利用時間格式欄位來建立 creationTime 屬性的替代規則。 請在這個欄位中指定 Java 時間型樣字串。 利用 java.text.SimpleDateFormat 類別來產生 long 值日期的「位置」、「比對」和「替代」等欄位,輸入的型樣將用來剖析它們所比對的值。之後,會利用這個值,以 Common Base Event 所需要的 XML 綱目 dateTime 格式來產生日期的字串值。
    myapp 日誌記錄範例中,「時間格式」規則如下:

    使用 Java 簡式日期格式類別的時間格式欄位範例規則

  6. 套用儲存配接器配置檔而產生的變更。
  7. 如果要測試您的規則,請按一下重新執行配接器「重新執行配接器」圖示來執行配接器。 結果會顯示在「格式製作器結果」視圖中。 提示:您可以指定要開始檢視的記錄編號。使用「重新執行」配接器圖示中的可用下拉清單和選取從記錄開始。 這時會開啟一個對話框,供您指定要開始的記錄編號。
  8. 按一下顯示下一事件「顯示下一事件」圖示圖示來檢視利用您撰寫的規則來產生的 Common Base Event 屬性。

附註:如果需要 Java 簡式日期格式的詳細資訊,請參閱 javadoc java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

剖析器規則完成之後,您可以配置配接器配置檔的輸出器元件。

相關概念
Hyades 通用日誌配接器概觀
Common Base Event 格式規格

相關作業
配置輸出器元件