記載和追蹤
此產品具有統一的記載元件,會處理產品寫入的訊息,並提供「首次失敗資料擷取 (FFDC)」服務。
此外,記載元件會擷取寫入至 System.out、System.err、java.util.logging 和 OSGi 記載中的訊息。記載元件會統一處理這些訊息及產品寫入的其他訊息。記載元件無法擷取 JVM 程序直接寫入的訊息,例如 -verbose:gc 輸出。
伺服器有三個主要日誌檔:
- console.log - 這個檔案含有來自 JVM 程序的重新導向標準輸出和標準錯誤串流。這項主控台輸出主要供人員直接使用。如果您使用預設 consoleLogLevel 配置,記載元件會將主要事件寫入至標準輸出串流,以及將錯誤寫入至標準錯誤串流。如果您使用預設 copySystemStreams 配置,記載元件也會將寫入至 System.out 串流的任何訊息,複製到標準輸出串流,以及將寫入至 System.err 串流的任何訊息,複製到標準錯誤串流。 標準輸出串流和標準錯誤串流一律包含 JVM 程序直接寫入的訊息,例如 -verbose:gc 輸出。只有在使用 server start 指令時,才會建立這個檔案,如果要變更其位置,只能使用 LOG_DIR 環境變數。如需相關資訊,請參閱從指令行來管理 Liberty。
- messages.log - 這個檔案包含記載元件寫入或擷取的所有訊息。所有寫入至這個檔案的訊息都包含其他資訊,例如,訊息時間戳記,以及寫入訊息之執行緒的 ID。這個檔案不包含 JVM 程序直接寫入的訊息。
- trace.log - 這個檔案包含記載元件寫入或擷取的所有訊息,以及任何進一步追蹤。只有在您啟用進一步追蹤時,才會建立這個檔案。這個檔案不包含 JVM 程序直接寫入的訊息。
記載配置
記載元件可以透過伺服器配置來控制。記載配置的主要位置是在 server.xml 檔中。您有時可能需要配置追蹤,以便在處理 server.xml 檔之前,先診斷發生的問題。在此情況下,您可以在 bootstrap.properties 檔中,指定對等的配置內容。如果 bootstrap.properties 檔案和 server.xml 檔案中都有指定配置內容,則在處理 server.xml 檔案之前,都會使用 bootstrap.properties 中的值。之後就會使用 server.xml 檔中的值。請避免在 bootstrap.properties 和 server.xml 這兩個檔案中,為相同的配置內容指定不同的值。
屬性 | 對等內容 | 說明 |
---|---|---|
logDirectory |
|
您可以使用這個屬性,來設定 console.log 檔以外之所有日誌檔的目錄,但包括 FFDC 在內。依預設,logDirectory 會設為 LOG_DIR 環境變數。
預設 LOG_DIR 環境變數路徑是
WLP_OUTPUT_DIR/serverName/logs。 避免問題: 請使用 LOG_DIR 環境變數或
com.ibm.ws.logging.log.directory 內容,來配置您一個要在其中寫入所有訊息的目錄,而不要使用 logDirectory 屬性。否則,依預設,少數訊息起初會寫入至 logs 目錄,其餘的訊息則會根據您的配置,寫入至指定的目錄。在伺服器執行時,logDirectory 屬性可能用來將日誌動態更新至指定的目錄。
|
maxFileSize |
|
日誌檔在捲動之前所能達到的大小上限(以 MB 為單位)。Liberty 執行時期只會根據大小來捲動日誌。如果要停用這個屬性,請將這個值設為 0。檔案大小上限是一個近似值。依預設,這個值是 20。 註: maxFileSize 不適用於 console.log 檔。
|
maxFiles |
|
如果有強制執行的檔案大小上限,這項設定用來決定各日誌檔的保存數量。這項設定也會套用至彙總了發生在任何特定日期之異常狀況的異常狀況日誌數目。因此,如果這個數目是 10,在 ffdc/ 目錄中,您可能會有 10 個訊息日誌、10 個追蹤日誌,以及 10 個異常狀況摘要。
依預設,這個值是 2。 註: maxFiles 不適用於 console.log 檔。
|
consoleLogLevel |
|
這個過濾器會控制進入 console.log 檔之訊息的精度。 有效值如下:INFO、AUDIT、WARNING、ERROR 和 OFF。 依預設,這個層次是 AUDIT。 |
copySystemStreams |
|
若為 true,會將寫入至 System.out 和 System.err 串流的訊息複製到 console.log。若為 false,會將那些訊息寫入至所配置的日誌,例如 messages.log 或 trace.log,但不會複製到 console.log。預設值為 true。 |
messageFileName |
|
訊息日誌的預設名稱是 messages.log。 這個檔案一律存在,且除了 System.out 和 System.err,還包含 INFO 及其他(AUDIT、WARNING、ERROR、FAILURE)訊息。 另外,這個日誌也包含時間戳記,以及核發的執行緒 ID。 如果日誌檔輪替,較早的日誌檔名稱格式為 messages_timestamp.log |
suppressSensitiveTrace | 在追蹤非類型化資料(例如:透過網路連線收到的位元組)時,伺服器追蹤可能會顯現機密資料。如果這個屬性設為 true,則會避免在日誌和追蹤檔中顯現潛在機密性資訊。預設值為 false。 | |
traceFileName |
|
只有在啟用了其他追蹤或詳細追蹤時,才會建立 trace.log 檔。 stdout 可辨識為特殊值,會使追蹤導向原始標準輸出串流。 |
traceSpecification |
|
追蹤字串用來選擇性地啟用追蹤。 預設值為 *=info。 |
traceFormat |
|
這個屬性控制追蹤日誌的格式。 Liberty 的預設格式是 ENHANCED。您也可以依照WebSphere Application Server traditional中的情況,使用 BASIC 和 ADVANCED 格式。 |
hideMessage |
|
您可以使用這個屬性,來配置您想在 console.log 與 message.log 檔中隱藏的訊息。如果將訊息配置成隱藏,會將它們重新導向至 trace.log 檔。 註: 在您使用這個屬性之前,請考量 Liberty:Developer Tools 已知限制主題中當使用 hideMessage 屬性來抑制訊息時,無法辨識伺服器是否啟動一節之下所提供的資訊。
|
您可以在開發人員工具的伺服器配置視圖中,選取記載和追蹤,以便在伺服器配置檔中設定記載內容。或依照下列所示,新增記載元素到伺服器配置檔:
<logging traceSpecification="*=audit:com.myco.mypackage.*=finest"/>
日誌詳細資料層次規格的格式:
<component> = <level>
其中 <component> 是指您要設定日誌詳細資料層次的元件,<level> 是指其中一個有效的日誌程式層次(off、fatal、severe、warning、audit、info、config、detail、fine、finer、finest、all)。 請以冒號 (:) 區隔多個日誌詳細資料層次規格。
小心: 對於給定的日誌程式,會根據套用至該日誌程式的最具體追蹤規格,來判斷層次。
元件會對應於 Java™ 套件和類別,或對應於 Java 套件的集合。
請利用星號 (*) 作為萬用字元,代表包括指定元件所含所有套件中所有類別的元件。
例如:
- *
- 指定所有在應用程式伺服器中執行的可追蹤程式碼,其中包括產品系統程式碼和自訂程式碼。
- com.ibm.ws.*
- 指定套件名稱開頭都是 com.ibm.ws 的所有類別。
- com.ibm.ws.classloader.JarClassLoader
- 只指定 JarClassLoader 類別。
第 6 版及更新版本的記載層次 | 內容/重要性 |
---|---|
off | 記載功能已被關閉。 |
fatal | 作業無法繼續進行,且元件、應用程式和伺服器也無法運作。 |
severe | 作業無法繼續進行,但是元件、應用程式和伺服器仍可以運作。 這個層次也會指出即將發生之無法復原的錯誤。 |
warning | 可能發生的錯誤,或是即將發生的錯誤。 這個層次也會指出逐漸發生的失敗(例如,可能發生的資源洩漏)。 |
audit | 影響伺服器狀態或資源的重要事件 |
info | 概述整體作業進度的一般資訊 |
config | 配置變更或狀態 |
detail | 詳述子作業進度的一般資訊 |
fine | 追蹤資訊 - 一般追蹤 + 方法進入、結束、回覆值 |
finer | 追蹤資訊 - 詳細追蹤 |
finest | 追蹤資訊 - 較詳細的追蹤,包括除錯問題所需的所有詳細資料 |
all | 所有的事件都會記載下來。如果您建立自訂層次,all 會包含那些層次,並且可提供比 finest 還詳細的追蹤。 |
console.log 檔與其他日誌檔的管理層次不同。
您可以變更的內容只有 consoleLogLevel。
如果您在乎 console.log 檔大小的遞增,您可以停用 console.log 檔,改用訊息日誌檔。
在訊息日誌檔中,會以不同格式來寫入相同的資料,您可以利用 maxFileSize 和 maxFiles 屬性來控制訊息日誌檔的大小和數量。
例如,下列 bootstrap.properties 檔會產生空白的 console.log 檔,以及最多三個輪替的 1 MB loggingMessages.log 檔。不過,來自基礎 JVM 的訊息仍可寫入至 console.log。bootstrap.properties 檔中的設定是在建立訊息日誌檔之前生效,因此,訊息日誌檔最初是建立為 loggingMessages.log,而不是預設的 messages.log。
com.ibm.ws.logging.max.file.size=1
com.ibm.ws.logging.max.files=3
com.ibm.ws.logging.console.log.level=OFF
com.ibm.ws.logging.message.file.name=loggingMessages.log
當伺服器重新啟動時,會重設 console.log 檔。註: 在所有平台上,日誌都是依預設系統編碼來寫入。
在 Windows 系統上,有兩類型的編碼:OEM 字碼頁,用於主控台輸出;ANSI 字碼頁,用來讀取和寫入檔案。 console.log 檔使用 OEM 字碼頁,所有其他日誌都使用 ANSI 字碼頁。
在所有其他平台上,所有日誌檔都使用預設編碼。