二進位記載
二進位記載是一個基於 WebSphere Application Server 傳統版中的「高效能延伸記載 (HPEL)」技術的高效能日誌和追蹤機能。
概觀
二進位記載提供一種便利機制,供您儲存及存取應用程式伺服器或應用程式所產生的日誌、追蹤、System.err 和 System.out 資訊。 它可用來替代提供 JVM 日誌和診斷追蹤檔(通常稱為 messages.log 和 trace.log)的預設日誌和追蹤機能。
日誌和追蹤儲存體
二進位記載提供一個日誌資料儲存庫和一個追蹤資料儲存庫。 請參閱下圖,以瞭解應用程式和應用程式伺服器如何儲存日誌和追蹤資訊。

- 應用程式碼的記載資料是在根日誌程式中收集,該日誌程式將記載資料傳送至 HPEL 記載架構中的日誌/追蹤資料處理程式,以及預設記載架構中的日誌/追蹤資料處理程式。
- 應用程式伺服器的記載資料是由一個日誌程式來收集,而且傳送到序列週邊介面 (SPI),該介面將記載資料傳送至 HPEL 記載架構中的日誌/追蹤服務,及預設記載架構中的日誌/追蹤服務。
- 每一個架構中的日誌/追蹤服務,皆會將該資料傳送至該架構的日誌/追蹤資料處理程式。
- HPEL 記載架構日誌/追蹤資料處理程式將該資料傳送至該架構中的日誌資料儲存庫、追蹤資料儲存庫及文字日誌。
- 預設記載架構日誌/追蹤資料處理程式將該資料傳送至該架構中的訊息日誌及追蹤日誌。
- 每一個架構中的資料,也會傳送至主控台日誌。
- 日誌資料儲存庫
日誌資料儲存庫是日誌記錄的儲存機能。 日誌資料通常是由管理者檢閱。 其中包括應用程式或伺服器寫入 System.out、System.err、OSGi 記載服務(層次為 LOG_INFO 或以上,包含 LOG_INFO、LOG_WARNING 和 LOG_ERROR)或 java.util.logging(層次為 Detail 或以上,包含 Detail、Config、Info、Audit、Warning、Severe、Fatal,以及在 Detail 層次或以上的任何自訂層次)的任何資訊。
- 追蹤資料儲存庫
追蹤資料儲存庫是追蹤記錄的儲存機能。 追蹤資料通常是供應用程式設計師或 WebSphere® Application Server 支援團隊使用。 這包括應用程式或伺服器寫入 LOG_DEBUG 層次的 OSGi 記載服務的任何資訊,或寫入小於「詳細資料」層次的 java.util.logging (包括 Fine、Finer、Finest 及任何小於「詳細資料」層次的自訂層次)。
日誌和追蹤效能
二進位記載經過設計和測試,已遠遠勝過預設日誌和追蹤機能。 使用二進位記載,而不使用預設日誌和追蹤架構,可大幅改良在執行應用程式伺服器時啟用追蹤而受到的效能影響。 此外,使用二進位記載,可使頻繁寫入日誌的應用程式執行更快。
- 日誌和追蹤事件分別儲存在單一位置
日誌事件、System.out 和 System.err 都儲存在日誌資料儲存庫中。 追蹤事件儲存在追蹤資料儲存庫中。 將每個事件類型只儲存在單一位置,可以確保不會將效能浪費於冗餘的資料儲存。
附註: 在記載效能很重要的情況下,必須停用主控台日誌。 任何寫入主控台日誌的內容都已儲存在日誌資料儲存庫中。
- 除非需要,否則資料不會格式化
將使用者要讀取的資料格式化,會取用處理器時間。 日誌和追蹤資料是以專有的二進位表示法,以更快的速度來儲存,而不是在執行時期進行日誌事件和追蹤事件資料的格式化。 這改進了日誌和追蹤機能的效能。 將日誌和追蹤格式化延遲到binaryLog執行指令,永不檢視的日誌或追蹤區段永不格式化。
- 先緩衝日誌和追蹤資料,再寫入磁碟
相較於以小區塊來寫入相同的資料量,將大區塊資料寫入磁碟的效率會更好。 二進位記載機能提供「先緩衝日誌和追蹤資料再寫入磁碟」的功能。 依預設,日誌和追蹤資料寫入磁碟之前,會先儲存在 8 KB 緩衝區中。 如果在 10 秒內填入緩衝區,緩衝區會寫入磁碟中。 如果超出這個時間沒有填入緩衝區,它會自動寫入磁碟中,以確保日誌會有最新的資訊。
管理日誌和追蹤
二進位記載設計成非常容易配置及瞭解。 例如,管理者很容易配置要將多少磁碟空間專用於日誌或追蹤,或要將日誌和追蹤記錄保留多久,且可以將日誌和追蹤內容保留給伺服器來管理。 作為另一個範例,可以使用一個易於使用的指令來存取所有日誌、追蹤、 System.out和 System.err 內容 (binaryLog) ,避免對特定內容要存取的檔案進行任何可能的混淆。
- 讀取日誌資料和追蹤資料儲存庫
日誌資料和追蹤資料儲存庫以 WebSphere Application Server 專有格式儲存,且無法使用「記事本」或 VI 之類的文字檔編輯器來讀取。 您可以使用將日誌資料和追蹤資料儲存庫複製到純文字格式binaryLog指令顯示。

- binaryLog 指令
binaryLog是一個容易使用的指令行工具,提供給使用者使用日誌資料和追蹤資料儲存庫。binaryLog提供過濾及格式化選項,可讓您輕鬆尋找日誌資料及追蹤資料儲存庫中的重要內容。 例如,使用者可以先過濾任何錯誤或警告,然後過濾在相同執行緒上某個主要錯誤訊息的 10 秒內出現的所有日誌和追蹤項目。
- 利用日誌和追蹤記錄延伸內容來過濾
二進位記載機能可讓開發人員使用日誌記錄環境定義 API (com.ibm.websphere.logging.hpel.LogRecordContext) ,將自訂延伸新增至日誌和追蹤記錄。 您可以使用binaryLog指令行工具,根據日誌和追蹤記錄延伸的內容來過濾記錄。
開發資源
二進位記載設計成比預設記載機能,更具彈性且更有效率地使用日誌和追蹤內容。 日誌和追蹤內容很容易過濾成只顯示您感興趣的記錄。 您可以使用指令行 (請參閱binaryLog指令) ,或開發人員可以使用 HPEL API 來建立功能強大的日誌處理程式。

- 讀取日誌資料和追蹤資料
已提供一個 API,讓開發人員很容易開發工具來使用二進位日誌和追蹤儲存庫中的內容。 例如,開發人員可以撰寫 Java™ 程式來搜尋日誌和追蹤內容,以尋找其訊息 ID 符合已知重要訊息 ID 清單的任何訊息。 這個 API 在 com.ibm.websphere.logging.hpel 套件中。 請參閱 API 文件,以取得 HPEL 日誌讀取 API 的詳細資料。
- 日誌和追蹤記錄延伸
開發人員可以透過日誌記錄環境定義 API (com.ibm.websphere.logging.hpel.LogRecordContext) ,將自訂延伸新增至日誌和追蹤記錄。 當二進位記載儲存日誌和追蹤記錄時,它會包含相同執行緒上日誌記錄環境定義中的任何延伸。 比方說,開發人員可能會撰寫一個 Servlet 過濾器來新增重要的 HTTP 要求參數到日誌記錄環境定義中。 當執行這個 Servlet 時,HPEL API 會新增這些延伸到相同執行緒上所建立的任何日誌和追蹤記錄中。
如同其他日誌和追蹤記錄欄位,開發人員可以利用 HPEL API 來存取這些記錄延伸。 當撰寫工具來讀取日誌和追蹤儲存庫時,這很有用。 另外,開發人員也可以利用日誌記錄環境定義 API,在執行時期存取自訂日誌處理程式、過濾器和格式製作程式中的各項延伸。