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

- 日誌資料儲存庫
日誌資料儲存庫是日誌記錄的儲存機能。 日誌資料通常是由管理者檢閱。 其中包括應用程式或伺服器寫入 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 記載服務,或寫入 Detail 以下層次(包含 Fine、Finer、Finest,以及 Detail 層次以下的任何自訂層次)之 java.util.logging 的任何資訊。
日誌和追蹤效能
二進位記載經過設計和測試,已遠遠勝過預設日誌和追蹤機能。使用二進位記載,而不使用預設日誌和追蹤架構,可大幅改良在執行應用程式伺服器時啟用追蹤而受到的效能影響。此外,使用二進位記載,可使頻繁寫入日誌的應用程式執行更快。
- 日誌和追蹤事件分別儲存在單一位置
日誌事件、System.out 和 System.err 都儲存在日誌資料儲存庫中。 追蹤事件儲存在追蹤資料儲存庫中。 將每個事件類型只儲存在單一位置,可以確保不會將效能浪費於冗餘的資料儲存。
註: 當記載效能很重要時,必須停用主控台日誌。任何寫入主控台日誌的內容都已儲存在日誌資料儲存庫中。- 除非需要,否則資料不會格式化
將使用者要讀取的資料格式化,會耗用處理器時間。 日誌和追蹤資料是以專有的二進位表示法,以更快的速度來儲存,而不是在執行時期進行日誌事件和追蹤事件資料的格式化。 這改進了日誌和追蹤機能的效能。 透過將日誌和追蹤的格式化延遲到執行 binaryLog 指令之時,會讓絕不會檢視的日誌或追蹤區段,也永遠不會格式化。
- 先緩衝日誌和追蹤資料,再寫入磁碟
相較於以小區塊來寫入相同的資料量,將大區塊資料寫入磁碟的效率會更好。 二進位記載機能提供「先緩衝日誌和追蹤資料再寫入磁碟」的功能。 依預設,日誌和追蹤資料寫入磁碟之前,會先儲存在 8 KB 緩衝區中。 如果在 10 秒內填入緩衝區,緩衝區會寫入磁碟中。 如果超出這個時間沒有填入緩衝區,它會自動寫入磁碟中,以確保日誌會有最新的資訊。
管理日誌和追蹤
二進位記載設計成非常容易配置及瞭解。 例如,管理者很容易配置要將多少磁碟空間專用於日誌或追蹤,或要將日誌和追蹤記錄保留多久,且可以將日誌和追蹤內容保留給伺服器來管理。 另一個範例是,使用簡單易用的單一指令 (binaryLog),可以存取所有日誌、追蹤、System.out 和 System.err 內容,對於要存取哪個檔案來取得特定的內容,不會有任何可能的混淆。
- 讀取日誌資料和追蹤資料儲存庫
日誌資料和追蹤資料儲存庫是以 WebSphere Application Server 專有的格式來儲存,無法利用 Notepad 或 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,在執行時期存取自訂日誌處理程式、過濾器和格式製作程式中的各項延伸。