![]() ![]() ![]() ![]() |
システム管理者と開発者は、ロギング出力をコンフィグレーションし、ログ メッセージをフィルタ処理してエラーをトラブルシューティングしたり、特定のイベントの通知を受信したりします。
以下に、ロギングのコンフィグレーション シナリオをいくつか示します。
DEBUG
および INFO
メッセージがログ ファイルに記録されないようにします。INFO
レベルのメッセージを、標準出力ではなくログ ファイルにパブリッシュできるようにします。WARNING
以上のメッセージをハンドラがパブリッシュするように指定します。
このリリースには commons-logging
インタフェースが用意されています。このインタフェースは commons.logging.LogFactory
および Log
インタフェースの実装を提供します。このインタフェースには、org.apache.commons.logging.LogFactory
クラスの拡張が含まれています。このクラス拡張は、ロギング モジュールの LoggingService
に委任される org.apache.commons.logging.Log
の実装を作成するファクトリとして動作します。このデフォルト実装の名前は weblogic.logging.commons.LogFactoryImpl
です。
http://jakarta.apache.org/commons/logging/apidocs/index.html
を参照してください。
ここでは、システム プロパティを使用してログ ファクトリを設定する方法について説明します。
org.apache.commons.logging.LogFactory
に対して設定されています。-Dorg.apache.commons.logging.LogFactory= weblogic.logging.commons.LogFactoryImpl
import org.apache.commons.logging.LogFactory;
System.setProperty(LogFactory.FACTORY_PROPERTY, "weblogic.logging.commons.LogFactoryImpl");
org.apache.commons.logging.impl.LogFactoryImpl
の実装は commons logging jar にあります。例を示します。-Dorg.apache.commons.logging.LogFactory= org.apache.commons.logging.impl.LogFactoryImpl
System.setProperty(LogFactory.FACTORY_PROPERTY, "org.apache.commons.logging.impl.LogFactoryImpl");
各ログ メッセージには重大度が関連付けられています。重大度は、ログ メッセージの重要性と緊急度を大まかに示します。TRACE
から EMERGENCY
までの重大度があらかじめ定義されています。これらの重大度は、ログ要求がロガーにディスパッチされるとログ レベルに変換されます。ログ レベル オブジェクトは、以下の値 (影響の小さい方から大きい方の順で並んでいる) のいずれかを指定できます。
TRACE
、DEBUG
、INFO
、NOTICE
、WARNING
、ERROR
、CRITICAL
、ALERT
、EMERGENCY
ロガー、ハンドラ、およびユーザ アプリケーションに対してログの重大度を設定できます。ロガーに対して重大度を設定した場合、いずれのハンドラも、ロガーによって拒否されたイベントを受信しません。たとえば、ロガーに対してログ レベルを NOTICE
に設定した場合、ハンドラは、INFO
レベルのイベントを受信しません。ハンドラに対してログ レベルを設定した場合、制約はそのハンドラのみに適用され、他のハンドラには適用されません。たとえば、ファイル ハンドラに対して DEBUG
をオフにすると、DEBUG
メッセージはログ ファイルには書き込まれませんが、標準出力には書き込まれます。
ユーザ (Oracle CEP モジュールの所有者またはユーザ アプリケーションの所有者) は、個別モジュールに対して Apache commons logging で使用されるロギング カテゴリ タイプを表す名前を自由に定義できます。ただし、カテゴリ名がパッケージ名として定義されている場合は、命名規則に基づいて、ロギング レベル階層がデフォルトで想定されます。たとえば、2 つのモジュールのロギング カテゴリ名が com.oracle.foo
と com.oracle.foo.bar
である場合は、com.oracle.foo
が com.oracle.foo.bar
のルート ノードになります。このように、子ノードが親をオーバーライドしない限り、親ノード (com.oracle.foo
) に適用されるロギング レベルが自動的に com.oracle.foo.bar
に適用されます。
つまり、明示的に重大度がコンフィグレーションされた最も近い親から重大度が継承されない限り、ノードに対して指定されているロギングの重大度が有効です。ルート ノードは常に明示的にコンフィグレーションされるため、その他の設定がされていない場合は、すべてのノードがルートから重大度を継承します。
表 12-1 にログ メッセージの重大度を示します。
重大度の低いメッセージが数多く生成され、重大度の高いメッセージは少なくなります。たとえば、通常の環境では、INFO
メッセージが多く生成され、EMERGENCY
メッセージは生成されません。
システムはメッセージを標準出力および指定されたログ ファイルに書き込みます。メッセージはタイムスタンプ、重大度、サブシステム、およびメッセージ テキストとスタック トレース (ある場合) で構成されます。各属性は山括弧で囲みます。
<May 02, 2007 10:46:51 AM EST> <Notice> <CommonTestSubsystem> <BEA-123456>
<Another Commons test message>
システムがメッセージを標準出力に書き込むとき、出力にプレフィックス ####
は含まれておらず、Server Name、Machine Name、Thread ID、User ID、Transaction ID、Diagnostic Context ID、および Raw Time Value の各フィールドは含まれていません。
前の節のメッセージが標準出力にどのように出力されるかを次の例に示します。
<Sept 22, 2004 10:51:10 AM EST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
この例では、メッセージ属性は、Locale-formatted Timestamp、Severity、Subsystem、Message ID、および Message Text です。
Oracle CEP には、OSGi フレームワークよりも前に起動する低レベルのフレームワーク ロガーがあります。このロガーは OSGi フレームワーク内部のロギング イベントを報告するために使用され、ロギング サブシステムがコンフィグレーションされるまでロギング サブシステムのカスタム デフォルトとして機能します。
たとえば、ユーザに表示されるログ メッセージのレベルまたは重大度は、config.xml
での設定より低く、コンソールの Launcher コマンドラインまたはログ ファイルでの設定と同じまたはそれより高い可能性があります。ロギング サブシステムが起動するまで、ログ メッセージはフレームワーク ロガーから送信され、フレームワークのロギング レベルを使用してメッセージがフィルタ処理されます。
Commons Logging を使用する方法は次のとおりです。
org.apache.commons.logging.LogFactory
を weblogic.logging.commons.LogFactoryImpl
に設定します。
この LogFactory
は、org.apache.commons.logging.Log
インタフェースを実装する weblogic.logging.commons.LogFactoryImpl
のインスタンスを作成します。
LogFactory
から、Commons Log
オブジェクトへの参照を名前によって取得します。
この名前は、ログ ファイル内でサブシステム名として表示されます。
Log
オブジェクトを使用して、ロギング サービスにログ要求を発行します。
Commons Log
インタフェース メソッドは、オブジェクトを受け取ります。ほとんどの場合、これはメッセージ テキストを含む文字列です。
さらに、Commons LogObject
は、コンストラクタでメッセージ ID、サブシステム名、および文字列メッセージ引数を受け取ります。org.apache.commons.logging (http://jakarta.apache.org/commons/logging/api/index.html
) を参照してください。
weblogic.logging.commons.LogImpl
ログ メソッドは、メッセージをサーバ ログに送ります。import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
public class MyCommonsTest {
public void testCommonsLogging() {
System.setProperty(LogFactory.FACTORY_PROPERTY,
"weblogic.logging.commons.LogFactoryImpl");
Log clog = LogFactory.getFactory().getInstance("MyCommonsLogger");
// Log String objects
clog.debug("Hey this is common debug");
clog.fatal("Hey this is common fatal", new Exception());
clog.error("Hey this is common error", new Exception());
clog.trace("Dont leave your footprints on the sands of time");
}
}
以下の節では、Oracle CEP ロギングのコンフィグレーションについて説明します。
この節では、<logging-service>
コンフィグレーション オブジェクトについて説明します。
|
||
<entry> 要素で囲まれた名前と値のペアのリストです。個別モジュールとモジュールのロギングの重大度を表します。これらの重大度は Oracle CEP サーバのデフォルトの重大度をオーバーライドします。
|
この節では、log-stdout
コンフィグレーション オブジェクトについて説明します。
|
||
この節では、log-file
コンフィグレーション オブジェクトについて説明します。
Oracle CEP の個別モジュールについて、ロギングの重大度を指定できます。この重大度は、Oracle CEP のデフォルトのロギング重大度 (Notice
) をオーバーライドします。個別モジュールの重大度を指定するには、モジュール パッケージの名前とロギングの重大度を (サーバの config.xml
ファイル内のログ コンフィグレーションでの <logger-severity-properties>
要素として) 指定します。複数のパッケージまたはロガーを <logger-severity-properties>
要素に名前と値のペアとして指定できます。
次の config.xml
サンプルは、Oracle CEP の複数のモジュールについてロギング重大度を変更する方法を示しています。
<logging-service>
<name>myLogService</name><logger-severity>Warning</logger-severity>
<stdout-config>myStdoutConfig</stdout-config>
<logger-severity-properties>
<entry>
<key>com.bea.wlevs.ede</key>
<value>Debug</value>
</entry>
<entry>
<key>sample.HelloWorld</key>
<value>Debug</value>
</entry>
<entry>
<key>com.bea.wlevs.cep.core.EPRuntimeImpl</key>
<value>Debug</value>
</entry>
</logger-severity-properties>
<log-file-config>myLogFileConfig</log-file-config>
</logging-service>
この例では、サーバのデフォルトのロギング重大度は WARNING
です。ただし、com.bea.wlevs.ede
パッケージ、sample.HelloWorld
ユーザ アプリケーション、および com.bea.wlevs.cep.core.EPRuntimeImpl
クラスに含まれるモジュールのロギング重大度は DEBUG
です。
以下の節では、Oracle CEP デバッグ機能の使用方法を説明します。
以下の手順に従って、Java コマンドラインでシステム プロパティを設定できます。
例 : -Dcom.bea.core.debug.DebugSDS=true
コンフィグレーション ファイルからデバッグをコンフィグレーションするには、以下の手順を実行します。
「サンプル デバッグ コンフィグレーション」を参照してください。
次の表に、このリリースでサポートされているデバッグ フラグを示します。
次に示すコード例は、config.xml
ファイルで SDS (Simple Declarative Services) デバッグをオンにするサンプル デバッグ コンフィグレーションです。
<config>
<debug>
<debug-properties>
<DebugSDS>true</DebugSDS>
</debug-properties>
</debug>
<logging-service>
<logger-severity>Debug
</logger-severity>
<stdout-config>logStdout
</stdout-config>
<log-file-config>
logFile<
/log-file-config>
</logging-service>
<log-file><name
>logFile
</name><log-file-severity
>Debug
</log-file-severity
>
<number-of-files-limited>true</number-of-files-limited>
<rotated-file-count>4</rotated-file-count>
<rotate-log-on-startup-enabled>true</rotate-log-on-startup-enabled>
</log-file>
<log-stdout>
<name>logStdout
</name>
<stdout-severity>Debug
</stdout-severity>
</log-stdout>
</config>
以下の節では、Log4j の使用方法に関する情報を示します。
Log4j は、アプリケーションにログ ステートメントを指定するために開発されたオープン ソースのツールです。Log4j には 3 つの主要なコンポーネントがあります。
Log4j Java ロギング機能は、Apache Foundation の Jakarta プロジェクトによって開発されました。以下を参照してください。
http://logging.apache.org/log4j/docs/
)http://logging.apache.org/log4j/docs/api/index.html
http://logging.apache.org/log4j/docs/manual
)
Log4j には Logger
クラスが定義されています。アプリケーションでは、それぞれユニークな名前を付けた複数のロガーを作成できます。Log4j の一般的な使用方法として、アプリケーションはログ メッセージを送信する各アプリケーション クラスの Logger
インスタンスを作成します。ロガーはネームスペース階層内に存在し、階層の上位のロガーから動作を継承します。
Log4j には、ロギング出力の送り先を表すアペンダ (ハンドラ) が定義されています。複数のアペンダを定義できます。たとえば、アプリケーションでは、標準出力にメッセージを送信するアペンダと、ログ メッセージをファイルに書き込む別のアペンダを定義できます。個別のロガーをゼロ個以上のアペンダに書き込むようにコンフィグレーションできます。使用例の 1 つとして、すべてのロギング メッセージ (すべてのレベル) をログ ファイルに送信し、ERROR
レベルのメッセージだけを標準出力に送信することができます。
Log4j には、ログ メッセージのフォーマットを制御するためのレイアウトが定義されています。各レイアウトは特定のメッセージ フォーマットを指定します。特定のレイアウトが各アペンダに関連付けられています。これにより、標準出力に対してファイル出力とは異なるログ メッセージ フォーマットを指定できます。次に例を示します。
デフォルトのコンフィグレーション ファイルは log4j.properties
です。この指定は、log4j.configuration
システム プロパティを使用してオーバーライドできます。https://www.qos.ch/shop/products/log4j/log4j-Manual.jsp
を参照してください。
log4j.properties
ファイルの例を次に示します。
log4j.rootLogger=debug, R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=D:/log4j/logs/mywebapp.log
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger=DEBUG, R
Log4j Logger
へのロギングを指定するには、コマンドラインで以下のシステム プロパティを設定します。
-Dorg.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryimpl
-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
-Dlog4j.configuration=
<URL>
/log4j.properties
![]() ![]() ![]() |