Oracle® Fusion Middleware Oracle WebLogic Serverログ・ファイルの構成とログ・メッセージのフィルタ処理 12c リリース1 (12.1.1) B65917-02 |
|
前 |
次 |
この章では、WebLogic Serverのロギングのシナリオと基本的な構成タスクについて説明します。メッセージのフィルタ処理とサブスクライブの詳細な手順については、第4章「WebLogic Serverログ・メッセージのフィルタ処理」および第5章「メッセージのサブスクライブ」を参照してください。
この章の内容は以下のとおりです。
WebLogic Serverシステム管理者と開発者は、ロギング出力を構成し、ログ・メッセージをフィルタ処理してエラーをトラブルシューティングしたり、特定のイベントの通知を受信したりします。
以下に、ロギングの構成シナリオの一部を示します。
DEBUG
メッセージおよびINFO
メッセージがログ・ファイルに記録されないようにします。
HTTPサブシステムからのINFO
レベルのメッセージを、標準出力ではなくログ・ファイルにパブリッシュできるようにします。
重大度がWARNING
以上のメッセージをハンドラがパブリッシュするように指定します。
クラスタ内の個別のサーバーのログ情報を追跡します。
ロギングの量の制御は、LogMBean
インタフェースを介して行えます。ロギング・プロセスでは、サブスクライブされたハンドラまたはアペンダにロギング・リクエストがディスパッチされます。WebLogic Serverでは、ログ・メッセージを標準出力に送信するためのハンドラ、サーバー・ログ・ファイル、ドメイン・ログへのメッセージのブロードキャスト機能、リモート・クライアント、ログ・イベントを末尾表示するためのメモリー・バッファがWebLogic Server管理コンソールから利用できます。各種ハンドラの量の制御を行うには、重大度などの条件を基にログ・メッセージをフィルタ処理します。LogMBean
(Oracle WebLogic Server MBeanリファレンスに説明があります)は、WebLogic Serverのハンドラに対する重大度の設定およびフィルタ条件の指定に使用できる属性を定義します。
以前のバージョンのWebLogic Serverでは、システム管理者と開発者は、ロガーとハンドラにプログラム的なアクセスしかできませんでした。このリリースのWebLogic Serverでは、MBeanを使用してハンドラを構成できるので、最も基本的なロギング構成のコードを記述する必要はありません。管理コンソールとWebLogic Server Scripting Tool (WLST)では、ロギングMBeanとやりとりするためのインタフェースが提供されます。また、Dweblogic.log.
attribute-name=value
(たとえば、Dweblogic.log.StdoutSeverity=Debug
)を使用して、コマンドラインでLogMBean
パラメータを指定することもできます。『Oracle WebLogic Serverコマンド・リファレンス』のメッセージの出力とロギングに関する項を参照してください。
さらにシナリオを高度に利用したり、ロガーを構成したりする場合は、JavaロギングAPIを使用します。
ロギングの量の制御で最も単純なのは、ハンドラに対して重大度を設定することです。基準となる重大度を指定して、それより低いレベルのメッセージの拒否するように設定することなどができます。たとえば、標準出力ハンドラには、デフォルトの重大度のしきい値としてNOTICE
が設定されています。そのため、INFO
およびDEBUG
レベルのメッセージは標準出力に送信されません。
ハンドラに対してフィルタを構成すると、HTTPおよびJDBCサブシステムからのメッセージのみを標準出力に送信するなど、パブリッシュ用にログ・メッセージを受け付ける条件を指定できます。
注意: ユーザーがロガーまたはハンドラの構成を変更できるには、 『Oracle WebLogic Serverセキュリティのプログラミング』のJavaセキュリティ・マネージャを使用したWebLogicリソースの保護に関する項、および「Java Logging Overview」( |
以下の節では、WebLogic Serverのロギング動作を構成する際の基準点について詳細を説明します。
各ログ・メッセージには、関連する重大度があります。重大度は、ログ・メッセージの重要性と緊急度を大まかに示します。WebLogic Serverでは、TRACE
からEMERGENCY
までの重大度があらかじめ定義されています。これらの重大度は、ログ・リクエストがロガーにディスパッチされるとログ・レベルに変換されます。ログ・レベル・オブジェクトは、以下の値(影響の小さい方から大きい方の順で並んでいる)のいずれかを指定できます。
TRACE
、DEBUG
、INFO
、NOTICE
、WARNING
、ERROR
、CRITICAL
、ALERT
、EMERGENCY
ロガーとハンドラに対してログの重大度を設定できます。ロガーに対してセキュリティ・レベル設定した場合、いずれのハンドラも、ロガーによって拒否されたイベントを受信しません。たとえば、ロガーに対してログ・レベルをNOTICE
に設定した場合、ハンドラは、INFO
レベルのイベントを受信しません。ハンドラに対してログ・レベルを設定した場合、制約はそのハンドラにのみ適用され、他のハンドラには及びません。たとえば、ファイル・ハンドラに対してDEBUG
をオフにしても、DEBUG
メッセージがログ・ファイルに書き込まれないわけではありません。ただし、DEBUG
メッセージは標準出力に書き込まれます。
サポートされている重大度の詳細は、Oracle WebLogic Server APIリファレンスのweblogic.logging.Severities
クラスに関する説明を参照してください。
ハンドラおよびロガーに対するログ・レベルの設定は、管理コンソール、WLST、またはコマンド・ラインで行います。ロガーのセキュリティ・レベルの設定を参照してください。ロガーおよびハンドラは、APIでも構成できます。「ロガーとハンドラに対する重大度の設定」を参照してください。
Logger
オブジェクトがパブリッシュするメッセージをより細かく管理できるようにするために、フィルタを作成して設定できます。フィルタはカスタム・ロジックによりログ記録の内容を評価するクラスで、ログ・メッセージを受け入れるか拒否するかの判断に使用します。たとえば、特定の重大度のメッセージや、特定のサブシステムに由来するメッセージなど、指定した条件に従ってメッセージを選択的に除去することが可能です。Logger
オブジェクトは、フィルタの基準を満たすログ・メッセージだけをパブリッシュします。各サーバー・インスタンスから、サーバーのログ・ファイル、標準出力、メモリー・バッファに書き込まれるメッセージ、またはドメイン全体のメッセージ・ログにブロードキャストされるメッセージについて、個別にフィルタを作成できます。
フィルタをロガーやハンドラに関連付けることができます。ハンドラに対するフィルタの構成は、管理コンソール、WLST、またはコマンド・ラインで行います。標準出力、ログ・ファイル、ログ・ブロードキャスタ、およびメモリー・ハンドラに対してフィルタを定義するためのLogFilterMBean
属性があります。LogFilterMBean
(Oracle WebLogic Server MBeanリファレンスに説明があります)は、ユーザーIDおよびサブシステムを基にしたフィルタ条件を定義します。ロガーに対するフィルタの構成にはAPIのみを使用できます。
「ロガーおよびハンドラのフィルタの設定」を参照してください。
以下の手順に、WebLogic Serverが生成するログ・メッセージを構成およびフィルタ処理する方法を示します。この手順の詳細は、関連ドキュメントおよびこのドキュメントの後半の節で説明します。
管理コンソールを使用して、ログ・ファイルを管理し、次のロギング・オプションを構成します。
ドメイン・ログおよびサーバー・ログのファイル名と場所、ローテーション・パターン、アーカイブされたログ・ファイルの場所、ログ・ファイル数が格納されます。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのログの表示と構成に関する項を参照してください。
サーバーが標準出力に送信するメッセージの種類。Oracle WebLogic Server管理コンソール・オンライン・ヘルプの標準出力するメッセージの指定に関する項を参照してください。
サーバー・インスタンスがドメイン・ログに送信するメッセージ。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのドメイン・ログへのメッセージの転送に関する項を参照してください。
HTTPリクエストに対するログ・ファイル。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのHTTPログの有効化と構成に関する項を参照してください。
ロギングの実装(JavaロギングまたはLog4j)を指定します。「WebLogicロギング・サービスでのLog4jの使い方」を参照してください。
メッセージの宛先を指定し、重大度や他の条件によるログ・メッセージのフィルタ処理を構成します。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのログ・メッセージのフィルタ処理に関する項を参照してください。「ロガーの重大度の指定」も参照してください。
または、WebLogic Scripting Toolを使用して、メッセージ・ハンドラに対するログ・メッセージのフィルタ処理を構成します。『Oracle WebLogic Scripting Tool』の既存のドメインの構成に関する項を参照してください。
Java APIを使用して、ロガーからパブリッシュされるログ・メッセージをフィルタ処理します。「重大度などの条件によるメッセージのフィルタ処理」を参照してください。
WebLogic Serverメッセージ・カタログとWebLogicロギング・サービスを使用して、ログ・メッセージを生成するアプリケーションを開発する場合は、XMLとJava APIに関する知識が必要です。開発者とシステム管理者の多くは、JavaロギングAPIの前身であるLog4jを使用しています。Log4jは、アプリケーション内にログ文を入れるために開発されたオープン・ソースのツールです。Log4jロギング機能は、Apache FoundationのJakartaプロジェクトによって開発されています。Log4jプロジェクトに関する詳細は、http://logging.apache.org/log4j/
を参照してください。
WebLogic Serverでは、WebLogicロギング・サービスの構成にLog4jを使用できます。「WebLogicロギング・サービスでのLog4jの使い方」を参照してください。
Jakarta Commons Logging APIでは、基底のログ実装(Log4jまたはJavaロギングAPI)からユーザーを分離する抽象レイヤーが提供されています。WebLogic ServerにはCommons LogFactory
インタフェースの実装が用意されており、このAPIを使用してサーバーのLogger
にリクエストを発行できます。「WebLogicロギング・サービスでのCommons APIの使い方」を参照してください。
Log4jには、ロガー、アペンダ、レイアウトの3つの主要コンポーネントがあります。以下の節では、Log4jについて簡単に説明します。
Log4jには、Logger
クラスを定義します。1つのアプリケーションで、各々が一意の名前を持つ複数のロガーを作成できます。Log4jの一般的な使い方では、アプリケーションで、ログ・メッセージを出力する各アプリケーション・クラスのLogger
インスタンスが作成されます。ロガーはネームスペースの階層内に存在し、その階層における上位クラスから動作を継承します。
階層の任意のレベルで各ロガーの重大度を設定できます。「ロガーの重大度の指定」を参照してください。
Log4jには、ロギング出力の宛先を表すアペンダ(ハンドラ)を定義します。複数のアペンダを定義できます。たとえば、1つのアプリケーションで、ログ・メッセージを標準出力に送信するアペンダと、ファイルに書き込むアペンダを定義できます。個々のロガーを構成して、0または1つ以上のアペンダに書き込むように構成することもできます。一例としては、すべてのロギング・メッセージ(全レベル)をログ・ファイルに送信する一方で、標準出力にはERROR
レベル・メッセージのみを送信する使い方があります。
WebLogicロギング・サービスでは、Java Logging APIに基づいた実装がデフォルトで使用されます。ただし、WebLogicロギング・サービスでLog4jを再構成できます。
デフォルトのJavaロギングのかわりにLog4jを使用するには、次の手順を実行します。
log4j.jar
ファイルのコピーを取得します。WebLogic ServerではLog4jバージョンを配布していませんが、次の場所にあるApacheからダウンロードできます。
log4j.jar
ファイルとWL_HOME
/server/lib/wllog4j.jar
ファイルをサーバーのクラスパスにコピーします。この操作は、両ファイルをDOMAIN_NAME
/lib
ディレクトリにコピーするだけで実行できます。これで、サーバーの起動中に両ファイルは動的にサーバーのクラスパスに追加されます。
これらの.jar
ファイルを別の場所に格納する場合は、両方を同じディレクトリに格納し、サーバーのクラスパスに指定されているパスを、そのディレクトリに変更する必要があります。
次のいずれかのメソッドを使用し、WebLogic Serverを構成してLog4jロギングを使用します。
WebLogic Server管理コンソール。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのロギングの実装の指定に関する項を参照してください。
WebLogic Serverを起動するJavaコマンドの-Dweblogic.log.Log4jLoggingEnabled=true
オプション。詳細は、『Oracle WebLogic Serverコマンド・リファレンス』のweblogic.Server構成オプションに関する項を参照してください。
LogMBean.isLog4jLoggingEnabled
属性を有効にするWLSTスクリプト。詳細は、「WebLogic ServerロギングのLog4jを構成および有効にするためのWLSTの使い方」を参照してください。
Log4jが有効化されていると、weblogic.logging.log4j.Log4jLoggingHelper
クラスから、サーバーが使用しているorg.apache.log4j.Logger
への参照を取得できます。
Log4j Logger
参照により、独自のカスタム・アペンダをアタッチしてサーバー・ログ・イベントを受け取ることができます。たとえば、サーバー・ログ・イベントをSyslogまたはWindowsイベント・ビューアに送るアペンダをアタッチできます。また、Logger
参照を使用してWebLogicロギング・サービスにログ・リクエストを発行できます。この場合、デプロイされたアプリケーションでLog4jライブラリが使用可能になっている必要があります。
アプリケーションがWebLogicロギング・サービスと対話する必要がない場合、アプリケーションのLIB
ディレクトリにLog4jライブラリをパッケージ化します。サーバー・ロギングでは、引続きデフォルトのJavaロギング実装が使用されます。
例3-2は、Log4j Logger
の使い方を実証するLog4jコードのサンプルです。
この項では、WLSTを使用して、デフォルトのJavaロギングのかわりにLog4jロギングを構成して有効にする方法について説明します。Javaロギングは、クライアント側およびサーバー側のロギングのデフォルトです。Log4jは、サーバー側でのみ使用できます。クライアント側ではサポートされていません。
例3-1は、管理サーバーでLog4j Logger
へのロギングを有効にするための、Log4jLoggingEnabled
プロパティ値の設定を示します。このスクリプトの実行後、設定を有効化するにはサーバーを再起動する必要があります。
例3-1 Log4jロギングの有効化
#invoke WLST C:\>java weblogic.WLST #connect WLST to an Administration Server wls:/offline> connect('username','password') #navigate to the writable MBean configuration tree wls:/mydomain/serverConfig> edit() wls:/mydomain/edit> startEdit() #set cmo to the server log config wls:/mydomain/edit !> cd("Servers/myserver/Log/myserver") #set log4j logging to true wls:/mydomain/edit/Servers/myserver/Log/myserver !> cmo.setLog4jLoggingEnabled(true) #save and activate the changes wls:/mydomain/edit/Servers/myserver/Log/myserver !> save() wls:/mydomain/edit/Servers/myserver/Log/myserver !> activate()
isLog4jLoggingEnabled
の詳細は、Oracle WebLogic Server MBeanリファレンスのLogMBean
を参照してください。
管理サーバーのみに存在するドメインのLogger
だけでなく、サーバーのLogger
でもLog4jを使用できます。ドメインのLog4j Logger
参照は、weblogic.logging.log4j.Log4jLoggingHelper.getLog4jDomainLogger()
メソッドを呼び出すと利用可能になります。例3-2は、Log4jを使用するためのサーバーのLogger
と、デフォルトのJava Logger
を使用するためのドメインのLogger
を構成する方法を示します。
例3-2 Log4jのサンプル・コード
import org.apache.log4j.Logger; import weblogic.logging.log4j.Log4jLoggingHelper; import weblogic.logging.LoggerNotAvailableException; /** * This example shows how to use the Log4j server Logger. */ public class MyLog4jTest { public void testWLSLog4j() { try { Logger logger = Log4jLoggingHelper.getLog4jServerLogger(); logger.addAppender(myAppender); // The Appender is configured using either the log4j props file or other custom mechanism. logger.info("Test log message"); } catch(LoggerNotAvailableException lex) { System.err.println("Unable to get a reference to the log4j Logger: "+ lex.getMessage()) } } }
例3-3はLog4jロギング構成のサンプルで、標準出力に対する重大度、およびサーバー・ログ・ファイルに送信されるメッセージに対するフィルタをconfig.xml
ファイルで指定する方法を示します。
例3-3 ロギング構成のサンプル
<con:log> <con:name>medrec</con:name> <con:file-name>medrec.log</con:file-name> <con:rotation-type>bySize</con:rotation-type> <con:file-min-size>20000</con:file-min-size> <con:log4j-logging-enabled>false</con:log4j-logging-enabled> </con:log> <con:log> <con:name>MedRecServer</con:name> <con:rotation-type>bySize</con:rotation-type> <con:file-min-size>20000</con:file-min-size> <con:stdout-severity>Debug</con:stdout-severity> <con:stdout-filter>MyFilter</con:stdout-filter> <con:log4j-logging-enabled>true</con:log4j-logging-enabled> </con:log> <con:log-filter> <con:name>MyFilter</con:name> <con:subsystem-name>HTTP</con:subsystem-name> <con:subsystem-name>IIOP</con:subsystem-name> <con:subsystem-name>JDBC</con:subsystem-name> <con:subsystem-name>JMS</con:subsystem-name> </con:log-filter>
構成するために、プログラムでLog4j Logger
およびそのアペンダ(ハンドラ)およびレイアウト(フォーマッタ)にアクセスできます。「Log4jアペンダに対する重大度とフィルタの設定」を参照してください。
WLSTの使用に関する詳細は、『Oracle WebLogic Scripting Tool』のWebLogic Scripting Toolの使用に関する項を参照してください。
WebLogicロギング・サービスでは、WebLogicロギング・サービスで使用される基底ロギング実装にリクエストを送るCommons LogFactory
インタフェースとLog
インタフェースを利用できます。
Commons Loggingを使用する場合は、WebLogic固有のCommonsクラス$MW_HOME
/modules/com.bea.core.weblogic.commons.logging_1.3.0.0.jar
をcommons-logging.jar
ファイルとともに以下のいずれかの場所に格納します。
APP-INF/LIB
ディレクトリまたはWEB-INF/LIB
ディレクトリ
DOMAIN_NAME
/LIB
ディレクトリ
サーバーのCLASSPATH
注意: WebLogic Serverの配布キットにCommonsロギング・バージョンは含まれていません。 |
例3-4では、適切なシステム・プロパティを設定してCommonsインタフェースを使用する方法を示します。
注意: Commonsインタフェースは、ここに示す手順で |
システム・プロパティorg.apache.commons.logging.LogFactory
をweblogic.logging.commons.LogFactoryImpl
に設定します。
このLogFactory
は、org.apache.commons.logging.Log
インタフェースを実装するweblogic.logging.commons.LogFactoryImpl
のインスタンスを作成します。
LogFactory
から、名前を基準にCommons Log
オブジェクトへの参照を取得します。
この名前は、ログ・ファイル内でサブシステム名として表示されます。
Log
オブジェクトを使用して、ログ・リクエストをWebLogicロギング・サービスに発行します。
Commons Log
インタフェース・メソッドは、オブジェクトを受け付けます。ほとんどの場合、これはメッセージ・テキストを含む文字列です。
Commons LogObject
は、コンストラクタでメッセージID、サブシステム名、および文字列メッセージ引数を取ります。org.apache.commons.logging
(http://commons.apache.org/logging/apidocs/index.html
)を参照してください。
weblogic.logging.commons.LogImpl
ログ・メソッドは、メッセージをサーバー・ログに送ります。
例3-4 Commonsのサンプル・コード
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.Log; public class MyCommonsTest { public void testWLSCommonsLogging() { 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"); } }
WebLogic Serverには、以下の重大度を指定できる階層ロガー・ツリーがあります。
weblogic.i18ngen
を使用してXML I18Nカタログから生成されたメッセージ・カタログ・ロガー・クラス。
Commons org.apache.commons.logging.LogFactory
インタフェースのWebLogic Server実装が有効化されている場合のCommons Logging APIのインスタンス。
すべてのロガーは、ツリー内で最も近い親から重大度を継承します。しかし、特定のロガーの重大度を明示的に設定し、その最も近い親に設定されている重大度をオーバーライドすることができます。ロガーの重大度は管理コンソール、WLST、またはコマンド・ラインから設定できます。
メッセージ・カタログ・ロガーを使用している場合、特定のサブシステムから届くメッセージの重大度は、ルート・ロガーの重大度によって決まります。ただし、DeploymentServiceロガー、Securityロガー、EJBロガーなど、個々のサブシステム・ロガーのルート・ロガーの重大度はオーバーライドすることができます。たとえば、ルート・ロガーの重大度がCRITICAL
で、その重大度をSecurityサブシステム・ロガーについてはNOTICE
に、EJBサブシステム・ロガーについてはWARNING
に設定するものとします。この設定は、管理コンソール、WLST、またはコマンド・ラインから行うことができます。
管理コンソールから、サーバーの「ロギング」→「一般」タブのロガーの重大度プロパティ・ボックスで次のエントリを作成します。各文字列はこのプロパティの各行に入力されます。つまり、各文字列の後で[Enter]キーを押して「保存」をクリックします。
Security=Notice EJB=Warning
WLSTの場合、set
コマンドを使用して、LogMBean
のLoggerSeverityProperties
属性の値を設定します(『Oracle WebLogic Scripting Tool』を参照)。
コマンド・ラインの場合、起動コマンドで以下のパラメータを指定します。
-Dweblogic.Log.LoggerSeverityProperties="Security=Notice;EJB=Warning"
すべてのサブシステム名の完全なインデックスについては、『Oracle WebLogic Serverエラー・メッセージ・リファレンス』を参照してください。サブシステム名は大文字と小文字が区別されるため、この索引の「サブシステム」列に表示されているとおりに入力する必要があります。
Commons Logging APIを使用する場合、ロガー名はJavaパッケージのドット表記法によるネーミング・ルールに従います。たとえば、ロガーが使用されているクラスの名前に応じて、a.b.FooLogger
またはa.b.c.Barlogger
などのロガー名になります。この場合、それぞれのドット区切りの識別子は、ロガー・ツリーのノードとして表されます。この例の場合、ルート・ロガーの下に「a」
という名前の子ノードがあり、「b」
という名前の子ノードが、その親である「a」
の下にあります。
ツリー内の任意のレベルにあるパッケージやロガーの重大度を構成することができます。たとえば、パッケージa.b
の重大度をa.b=Info
と指定すると、そのパッケージのすべての子ノードから届くDEBUG
メッセージおよびTRACE
メッセージがブロックされます。しかし、子ノードの値を明示的に設定すると、親ノードの重大度をオーバーライドすることができます。たとえば、FooLogger
の重大度をa.b.FooLogger=Debug
と指定すると、このロガーから届くすべてのログ・メッセージは許可されますが、a.b
下のその他の子ノードについては、DEBUG
メッセージおよびTRACE
メッセージがフィルタ処理されます。
パッケージまたはロガーの重大度は、管理コンソール、WLST、またはコマンド・ラインで指定できます。
管理コンソールの場合、サーバーの「ロギング」>「全般」タブの「ロガー重大度プロパティ」ボックスに、以下のセミコロン区切りの文字列を入力します。
a.b=Info;a.b.FooLogger=Debug
WLSTの場合、set
コマンドを使用して、LogMBean
のLoggerSeverityProperties
属性の値を設定します(『Oracle WebLogic Scripting Tool』を参照)。
コマンド・ラインの場合、起動コマンドで以下のパラメータを指定します。
-Dweblogic.Log.LoggerSeverityProperties="a.b=Info;a.b.FooLogger=Debug"
デフォルトでは、WebLogic Serverインスタンスを開発モードで起動すると、サーバーではローカルのサーバー・ログ・ファイルがSERVER_NAME
.log.n
という名前に自動で変更(ローテーション)されます。以降のサーバー・セッションでは、ログ・メッセージは、そのファイル・サイズが500KBになるまで、SERVER_NAME
.log
に蓄積されます。
サーバー・ログ・ファイルがこのサイズに達するたびに、サーバーではログ・ファイルの名前が変更され、新しいメッセージを格納するための新しいSERVER_NAME
.log
が作成されます。デフォルトでは、ローテーションされたログ・ファイルは作成順に番号が付けられます(filenamennnnn
)。filename
は、ログ・ファイルに構成された名前です。ローテーションされたログ・ファイルのファイル名に日付と時刻が含まれるように、サーバー・インスタンスを構成することもできます(server-name-%yyyy%-%mm%-%dd%-%hh%-%mm%
.log
など)。
デフォルトでは、サーバー・インスタンスを本番モードで起動すると、ファイル・サイズが5000KBになるたびに、サーバーではサーバー・ログ・ファイルのローテーションが行われます。サーバーの起動時にはローカルのサーバー・ログ・ファイルはローテーションされません。サーバーの起動モードの変更に関する詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプの本番モードへの変更に関する項を参照してください。
ログ・ファイルのローテーションに関するこれらのデフォルト設定は変更できます。たとえば、サーバーがログ・ファイルをローテーションするファイル・サイズを変更したり、時間間隔に基づいてログ・ファイルをローテーションするように構成したりできます。蓄積可能なローテーションするファイルの最大数を指定することもできます。ログ・ファイル数がこの制限に達すると、以降のファイル・ローテーションによって最も古いログ・ファイルが削除され、最新の接尾辞の付いた新しいログ・ファイルが作成されます。
注意: WebLogic Serverでは、ログ・ファイルが大きくなり過ぎないように、500MBのしきい値サイズ制限を設定しており、それを超えると強制的にローテーションが行われます。 |
ログ・ファイル・ローテーションの設定に関する詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのログ・ファイルのローテーションに関する項を参照してください。
サーバー、ドメイン、またはHTTPアクセス・ログ・ファイルのローテーションをすぐに行うには、LogRuntime.forceLogRotation()
メソッドを使用します。Oracle WebLogic Server MBeanリファレンスのLogRuntimeMBean
を参照してください。
例3-5のWLSTコマンドは、サーバー・ログ・ファイルのローテーションをすぐに行います。
例3-5 オン・デマンドのログ・ローテーション
#invoke WLST C:\>java weblogic.WLST #connect WLST to an Administration Server wls:/offline> connect('username','password') #navigate to the ServerRuntime MBean hierarchy wls:/mydomain/serverConfig> serverRuntime() wls:/mydomain/serverRuntime>ls() #navigate to the server LogRuntimeMBean wls:/mydomain/serverRuntime> cd('LogRuntime/myserver') wls:/mydomain/serverRuntime/LogRuntime/myserver> ls() -r-- Name myserver -r-- Type LogRuntime -r-x forceLogRotation java.lang.Void : #force the immediate rotation of the server log file wls:/mydomain/serverRuntime/LogRuntime/myserver> cmo.forceLogRotation() wls:/mydomain/serverRuntime/LogRuntime/myserver>
サーバーは即座にファイルのローテーションを行い、次のメッセージを出力します。
<Mar 2, 2005 3:23:01 PM EST> <Info> <Log Management> <BEA-170017> <The log file C:\diablodomain\servers\myserver\logs\myserver.log will be rotated. Reopen the log file if tailing has stopped. This can happen on some platforms like Windows.> <Mar 2, 2005 3:23:01 PM EST> <Info> <Log Management> <BEA-170018> <The log file has been rotated to C:\diablodomain\servers\myserver\logs\myserver.log00001. Log messages will continue to be logged in C:\diablodomain\servers\myserver\logs\myserver.log.>
デフォルトでは、ローテーションされたファイルはログ・ファイルと同じディレクトリに格納されます。アーカイブされたログ・ファイルの格納先に別のディレクトリを指定するには、管理コンソールを使用するか、コマンドラインからLogFileMBean
のLogFileRotationDir
プロパティを設定します。Oracle WebLogic Server MBeanリファレンスのLogFileMBean
を参照してください。
次のコマンドでは、-Dweblogic.log.LogFileRotationDir
Java起動オプションを使用して、アーカイブされたログ・ファイルのディレクトリを指定します。
java -Dweblogic.log.LogFileRotationDir=c:\foo -Dweblogic.management.username=installadministrator -Dweblogic.management.password=installadministrator weblogic.Server
ログ・ファイルが指定のローテーションしきい値を超えると、サーバー・インスタンスはログ・ファイルがローテーションされることを知らせるログ・メッセージを出力します。次に、サーバー・インスタンスはログ・ファイルをローテーションし、古いメッセージが格納されたファイルの名前を知らせる追加メッセージを出力します。
たとえば、サイズに基づいてログ・ファイルのローテーションを行うように設定し、最小ローテーション・サイズとして500Kを指定した場合、サーバーはファイル・サイズが500Kを超えたと判断すると次のメッセージを出力します。
<Sept 20, 2004 1:51:09 PM EST> <Info> <Log Management> <MachineName> <MedRecServer> <ExecuteThread: '2' for queue: 'weblogic.kernel.System'> <<WLS Kernel>> <> <> <1095692939895> <BEA-170017> <The log file C:\Oracle\Middleware\wlserver_12.1\samples\domains\medrec\servers\MedRecServer\logs\medrec.log will be rotated. Reopen the log file if tailing has stopped. This can happen on some platforms like Windows.>
サーバーは即座にファイルのローテーションを行い、次のメッセージを出力します。
<Sept 20, 2004 1:51:09 PM EST> <Info> <Log Management> <MachineName> <MedRecServer> <ExecuteThread: '2' for queue: 'weblogic.kernel.System'> <<WLS Kernel>> <> <> <1095692939895> <BEA-170018> <The log file has been rotated to C:\Oracle\Middleware\wlserver_12.1\samples\domains\medrec\servers\MedRecServer\logs\medrec.log00001. Log messages will continue to be logged in C:\Oracle\Middleware\wlserver_12.1\samples\domains\medrec\servers\MedRecServer\logs\medrec.log.>
どちらのメッセージの重大度もINFO
です。ローテーション前のメッセージのメッセージIDは常にBEA-170017
で、ローテーション後のメッセージのメッセージIDは常にBEA-170018
です。
標準Windowsファイル・システムなどのファイル・システムでは、読取り用に開いているファイルにロックが設定されます。このようなファイル・システムでは、アプリケーションでログ・ファイルの末尾を表示している場合、またはコマンド・プロンプトでDOS tail -f
などのコマンドを使用する場合、サーバーがログ・ファイルのローテーションを行った後にその操作が停止します。tail -f
コマンドは、ファイルに行が追加されたときにメッセージを標準出力に出力します。詳細情報を参照するには、DOSプロンプトでhelp tail
と入力してください。
アプリケーションでログ・ファイルの末尾を表示する場合、こうした状況を解決するには、サーバーがログ・ローテーション・メッセージを出力したときにアプリケーションに通知を行うJMXリスナーを作成します。アプリケーションは、このメッセージを受信したときに末尾表示の操作を再起動できます。JMXリスナーの例については、第5章「メッセージのサブスクライブ」を参照してください。
WebLogic Serverインスタンスが動作しているJVMは、メッセージを標準エラーおよび標準出力に送信します。サーバーとアプリケーション・コードは、ロギング・メカニズムを使用するかわりに、これらのストリームに直接書き込みます。構成オプションを使用すると、サーバーのターミナル・コンソールやログ・ファイルなど、登録されているすべてのログ宛先にJVMの出力をリダイレクトできます。有効にした場合、ログ・エントリは、重大度がNOTICE
のメッセージとして表示されます。JVM出力のリダイレクトによって、ネイティブ・コードからの出力(たとえば、JVMからのスレッド・ダンプ)はキャプチャされません。
たとえば、JVMの標準出力メッセージをリダイレクトするには、次の手順に従います。
管理サーバーの起動時に、weblogic.Server
コマンドに次のJavaオプションを指定します。
-Dweblogic.log.RedirectStdoutToServerLogEnabled=true
『Oracle WebLogic Serverコマンド・リファレンス』のweblogic.Server構成オプションに関する項を参照してください。
管理サーバーが起動したら、管理コンソールでJVM標準出力メッセージをリダイレクトします。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJVMの出力のリダイレクトに関する項を参照してください。
WLSTを使用してLogMBean
のRedirectStdoutToServerLogEnabled
プロパティの値を変更し、サーバーを再起動します。
例3-6のWLSTコマンドは、管理サーバーのJVM標準出力メッセージをサーバー・ロギング宛先にリダイレクトします。
例3-6 サーバー・ロギング宛先への標準出力のリダイレクト
C:\>java weblogic.WLST wls:/offline> connect('username','password') wls:/mydomain/serverConfig> edit() wls:/mydomain/edit> startEdit() wls:/mydomain/edit !> cd("Servers/myserver/Log/myserver") wls:/mydomain/edit/Servers/myserver/Log/myserver !> cmo.setRedirectStdoutToServerLogEnabled(true) wls:/mydomain/edit/Servers/myserver/Log/myserver !> save() wls:/mydomain/edit/Servers/myserver/Log/myserver !> activate()
WLSTの使用に関する詳細は、『Oracle WebLogic Scripting Tool』のMBeanのナビゲート(WLSTオンライン)に関する項を参照してください。RedirectStdoutToServerLogEnabled
の詳細は、Oracle WebLogic Server MBeanリファレンスのLogMBean
を参照してください。