- 將日誌訊息匯出到日誌記載代理程式的功能
在 org.eclipse.hyades.logging.java 套件下,java.util.logging.Handler 抽象類別的延伸可讓日誌程式配置成將日誌訊息匯出到「日誌記載代理程式」。
這個 org.eclipse.hyades.logging.java.LoggingAgentHandler 處理常式會根據處理常式的過濾器和日誌記載層次,
來檢查是否可記載已寫入日誌程式的 java.util.logging.LogRecord 日誌訊息。如果要記載這個日誌訊息,
系統會建立一個「日誌記載代理程式」,其名稱與記載該訊息的日誌程式相同。該訊息會利用 org.eclipse.hyades.logging.java.XmlFormatter 來格式化,並寫入這個「日誌記載代理程式」中。
- 將日誌訊息轉換成 XML 的功能
在 org.eclipse.hyades.logging.java 套件下,java.util.logging.Formatter 抽象類別的延伸可讓
org.eclipse.hyades.logging.java.LoggingAgentHandler 和其他處理常式將 java.util.logging.LogRecord 日誌訊息格式化成 XML。這個
org.eclipse.hyades.logging.java.XmlFormatter 格式製作程式會將
java.util.logging.LogRecord 訊息轉換成現行
org.eclipse.hyades.internal.logging.core.XmlGenerator 實作的 XML 對等項目,但排除掉 host、process 和 agent 等標籤。所產生的 XML 並未格式化,且巢狀層次上限設為 4。在進行格式化時,系統會檢查該物件是否實作 org.eclipse.hyades.logging.core.IExternalizableToXml 介面。如果是這樣的話,基於效能內部檢查的理由,系統會呼叫
externalizeCanonicalXmlString() API 來代替 XML 序列化。
下列輸出說明日誌訊息("Hello World" 字串(「嚴重」日誌記載層次))的 XML 轉換:
<LogRecord logging.util.id="java.util.logging.LogRecord_10468105484720000"
logging.util.agent_idref="org.eclipse.hyades.tests.java.JavaLoggingTest"
logging.util.MsgLoggerLevel="SEVERE" LoggerName="org.eclipse.hyades.tests.java.JavaLoggingTest"
ResourceBundleName="null" SequenceNumber="0" SourceClassName="org.eclipse.hyades.tests.java.JavaLoggingTest"
SourceMethodName="main" Message="Hello World" ThreadID="10"
Millis="1046810548171">
<ResourceBundle Instance_Name="ResourceBundle" Value="null"/>
<Level Instance_Name="Level" logging.util.id="java.util.logging.Level_10468105484720001"
ResourceBundleName="sun.util.logging.resources.logging" Name="SEVERE"
LocalizedName="SEVERE"><Class Instance_Name="Class" logging.util.id="java.lang.Class_10468105484720002"
Name="java.util.logging.Level" Type="class" Package="java.util.logging"
Modifers="public" Superclass="java.lang.Object" />
</Level>
<Array Instance_Name="Parameters" Value="null" />
<Throwable Instance_Name="Thrown" Value="null" />
<Class Instance_Name="Class" logging.util.id="java.lang.Class_10468105484820000"
Name="java.util.logging.LogRecord" Type="class" Package="java.util.logging"
Modifers="public" Superclass="java.lang.Object" />
</LogRecord>
- 將繼承類別引導到現有的「Java 日誌記載 API」的功能
如果要將 org.eclipse.hyades.logging.java14 繼承類別引導到 JDK 1.4.0 和以上版本的現有「Java 日誌記載 API」,您必須先將下列項目加入 JRE_HOME\lib\logging.properties 配置檔中,才能啟動 VM 或呼叫
java.util.logging.LogManager.readConfiguration() API:
handlers= <your current handlers>, org.eclipse.hyades.logging.java.LoggingAgentHandler
org.eclipse.hyades.logging.java.LoggingAgentHandler.formatter = org.eclipse.hyades.logging.java.XmlFormatter
另外,您可以在執行時期分別利用 addHandler() 和 setFormatter() API,
於 Logger(例如:處理常式)和 Handler(例如:格式製作程式)中以程式化的方式將 org.eclipse.hyades.logging.java14 外掛程式繼承類別搭配 JDK 1.4.0 和以上版本的現有「Java 日誌記載 API」一起使用。
- 將 Common Base Event 併入日誌記錄的功能
在 org.eclipse.hyades.logging.java 套件下,java.util.logging.LogRecord 類別的延伸可讓您建立自訂的日誌記錄,以將 org.eclipse.hyades.logging.events.ICommonBaseEvent 併入
java.util.logging.LogRecord 中。
這個 org.eclipse.hyades.logging.java.CommonBaseEventLogRecord 只是繼承了 java.util.logging.LogRecord,且包含 org.eclipse.hyades.logging.events.ICommonBaseEvent 的單一參照。您要負責在寫入 java.util.logging.Logger 之前,
先建立新的
org.eclipse.hyades.logging.java.CommonBaseEventLogRecord 物件。
- 允許過濾已記載的記錄並避免處理常式類別處理這些記錄的功能
您可以設定 java.util.logging.Filter 介面的實作(如
org.eclipse.hyades.logging.java.CommonBaseEventFilter,僅准許順利記載
org.eclipse.hyades.logging.java.CommonBaseEventLogRecord )並在處理常式中記錄 java.util.logging.Level,
來過濾已記載的記錄並避免
org.eclipse.hyades.logging.java.LoggingAgentHandler 類別處理這些記錄。這些值可以在執行時期,分別利用
setFilter() and setLevel() API 以程式化的方式來設定。
另外,您可以在啟動 VM 或呼叫
java.util.logging.LogManager.readConfiguration() API 之前,先將下列項目加入 JRE_HOME\lib\logging.properties 配置檔中:
org.eclipse.hyades.logging.java.LoggingAgentHandler.level = <level>
org.eclipse.hyades.logging.java.LoggingAgentHandler.filter = org.eclipse.hyades.logging.java.CommonBaseEventFilter
- 建立 java.lang.Object 和 java.lang.Throwable 之自訂日誌程式的功能
在 org.eclipse.hyades.logging.commons 套件下,org.apache.commons.logging.Log 介面的實作可讓您建立自訂的日誌程式,用以將 java.lang.Object 和
java.lang.Throwable 記載到和日誌程式同名的「日誌記載代理程式」中。
這個 org.eclipse.hyades.logging.commons.Logger 會根據日誌程式的日誌記載層次,來檢查是否可記載已寫入日誌程式的 java.lang.Object 和/或 java.lang.Throwable 日誌訊息。如果要記載日誌訊息,java.lang.Object 和 java.lang.Throwable 日誌訊息會利用
org.eclipse.hyades.internal.logging.core.XmlGenerator 格式化,並寫入「日誌記載代理程式」中。在進行格式化時,系統會檢查該物件是否實作
org.eclipse.hyades.logging.core.IExternalizableToXml 介面。如果是這樣的話,基於效能內部檢查的理由,系統會呼叫
externalizeCanonicalXmlString() API 來代替 XML 序列化。如果要將 org.eclipse.hyades.logging.commons.Logger 類別引導到 org.apache.commons.logging.LogFactory 類別,您必須在 VM 啟動時設定下列系統內容:
-Dorg.apache.commons.logging.Log=org.eclipse.hyades.logging.commons.Logger
(C) Copyright IBM Corporation 2000, 2003. All Rights Reserved.