ログおよびトレース・アナライザーは、
以下のロギング・ユーティリティーの新規ユーザーと既存ユーザーに、
スタンドアロンおよびプラグインのサポートを提供します。
- メッセージをロギング・エージェントにエクスポートする機能
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 メッセージを XML と同等の、
現行の org.eclipse.hyades.internal.logging.core.XmlGenerator 実装に変換しますが、
ホスト、プロセス、およびエージェント・タグは除外されます。生成された XML は
フォーマットされず、最大ネスト・レベルは 4 に設定されています。
フォーマットを行う場合、オブジェクトは
org.eclipse.hyades.logging.core.IExternalizableToXml インターフェース
を実装するかどうかチェックされます。実装する場合は、パフォーマンス上の理由で、
イントロスペクションの手段により、XML シリアライゼーションの代わりに、
externalizeCanonicalXmlString() API が呼び出されます。
以下の出力は、ログ・メッセージ (ストリング "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 にブートストラップするには、
VM の開始前、または java.util.logging.LogManager.readConfiguration() API が
呼び出される前に、以下の項目を JRE_HOME\lib\logging.properties 構成ファイル
に追加する必要があります。
handlers= <your current handlers>, org.eclipse.hyades.logging.java.LoggingAgentHandler
org.eclipse.hyades.logging.java.LoggingAgentHandler.formatter = org.eclipse.hyades.logging.java.XmlFormatter
あるいは、org.eclipse.hyades.logging.java14 プラグイン拡張クラスを、
JDK 1.4.0 以上の既存の Java ロギング API で、実行時に、
addHandler() と setFormatter() API を、
それぞれロガー (たとえば、ハンドラー) とハンドラー (たとえば、フォーマッター) に対し、
方針に基づいて使用することができます。
- 共通ベース・イベントをログ・レコードに組み込む機能
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 オブジェクト
を作成する必要があります。
- ログに記録されたレコードをフィルター操作して、
ハンドラー・クラスによって処理されないようにする機能
org.eclipse.hyades.logging.java.CommonBaseEventFilter
(これは、org.eclipse.hyades.logging.java.CommonBaseEventLogRecord だけが
正常にログに記録されることを許可する) などの
java.util.logging.Filter インターフェースの実装を設定し、
ハンドラーで java.util.logging.Level をロギングすることにより、
ログに記録されたレコードをフィルター操作して、
org.eclipse.hyades.logging.java.LoggingAgentHandler クラスによる処理から
除外することができます。これらの値は、実行時に、それぞれ
setFilter() および 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
インターフェースを実装するかどうかチェックされます。実装する場合は、パフォーマンス上の理由で、
イントロスペクションの手段により、XML シリアライゼーションの代わりに、
externalizeCanonicalXmlString() API が呼び出されます。
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.