ログ定義ファイルを利用することにより、Apcoordinatorが標準で利用するログ(標準ログ)とユーザアプリケーションで利用するログを分けることが可能です。標準で利用するログは、アプリケーションに記述を行わなくてもApcoordinatorがログを出力します。
ログ定義ファイルの格納先は“3.6.2 設定ファイルフォルダ”を参照してください。
Apcoordinatorで出力するログは以下のように分類されています。
分類 | 管理名 | 用途 | |
---|---|---|---|
標準ログ | system | Apcoordinatorの稼働状況を出力します。 | |
ユーザログ | 高信頼性ログ | 上記以外の任意の名称 | データベース更新やアプリケーションの呼び出しで指定するパラメタなど、データ操作の運用履歴を取得します。 |
汎用ログ | 実行時に発生したエラーや、動作の過程を表すインフォメーション、開発過程や障害調査などで用いるデバッグ情報を取得します。 |
注意
管理名として以下を利用することはできません。
journal
performance
systemClient
journalClient
performanceClient
ログ定義ファイルを利用する場合、ApplicationProfileクラスのnewLogComposerが返すLogComposerオブジェクトは利用されません。
ログ出力の記述
ビジネスメソッドでは、以下の記述でログを出力します。ログ出力クラス(LogComposer)は、DispatchContextクラスのgetLogComposerの引数に、ログ管理名を指定することで取得します。 LogComposerの各メソッドを利用してログを出力します。
import com.fujitsu.uji.log.*; .... public Object someMethod(DispatchContext context, DataBean bean) { .... LogComposer myLogger = context.getLogComposer("mylog"); myLogger.println("someMethod start"); .... }
ログ定義ファイルの記述
管理名systemは、標準エラー出力へ、管理名mylogは、標準出力へログを出力する定義ファイルの例です。
《logConf.xml》
<?xml version="1.0" encoding="UTF-8" ?> <logConfig xmlns=http://interstage.fujitsu.com/schemas/uji/logConf xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://interstage.fujitsu.com/schemas/uji/logConf http://interstage.fujitsu.com/schemas/uji/logconf.xsd"> <config> <version>7.0</version> </config> <logComposer name="system"> <output name="systemOutput" type="stderr"/> </logComposer> <logComposer name="mylog"> <output name="mylogOutput" type="stdout"/> </logComposer> </logConfig>
versionタグ
ログ定義ファイルの文法バージョンを指定します。指定するバージョンの詳細は“定義ファイルリファレンス”を参照してください。
logComposerタグ
ログ種別を指定します。nameには、管理名を指定します。
outputタグ
ログの出力先を指定します。詳細は後述します。
outputタグは、ログの出力先を指定します。複数の出力先にログを出力する場合は、outputタグを複数記述します。
<logComposer name="system"> <output name="sysStdOut" type="stderr"/> <output name="sysFileOut" type="file"> <param name="path" value="/var/log"/> <param name="prefix" value="myapp"/> <param name="extension" value=".log"/> </output> </logComposer>
name属性には、outputタグを識別する名前を指定します。 type属性は、以下のいずれかを記述します。パラメタが必要な場合は、paramタグで指定します。
指定名 | 意味 | パラメタ |
---|---|---|
stdout | 標準出力 | なし |
stderr | 標準エラー出力 | なし |
file | ファイル | 出力フォルダ(path)、ファイル名(prefix)、拡張子(extension) |
syslog | Syslog | ホスト名(hostname)、機能(facility)、重大度(severity)、文字エンコーディング(encoding) |
event | Windowsイベントログ | ログ種別(type) |
logComposer | 他のログ定義の利用 | logComposerタグの名前(target) |
ポイント
Windowsイベントログへログを出力する場合は、次のファイルのパスを環境変数PATHに追加します。
ujieventlog.dll
ファイルへ出力する場合には、プロセスごとに異なるファイルへ出力する必要があります。また、異なる定義名から同一のファイルへ出力する場合には、次のように定義します。
<logComposer name="system"> <output name="sysFileOut" type="file"> <param name="path" value="/var/log"/> <param name="prefix" value="myapp"/> <param name="extension" value=".log"/> </output> </logComposer> <logComposer name="mylog01"> <output name="myLogOut" type="logComposer"> <!-- 定義名"system"のoutputタグの出力先へ出力 --> <param name="target" value="system"/> </output> </logComposer>
注意
ログをファイル出力する場合、他のプロセスがこのログファイルのロックなどの操作をすると、例外が発生してログ出力が失敗します。
プロセス多重でログを出力する場合、type属性に“file”を指定しないでください。
type属性に“file”を指定し、ファイルが満杯となった場合、プロセス間で切り替えファイル名が重なり、それ以降のログが出力されません。
プロセス多重でログを出力する場合、ファイル以外の出力先を指定してください。
logComposerタグのclass属性で、ログ出力クラスを変更することができます。
<logConfig> <!-- 作成した派生クラスを指定 --> <logComposer name="Log1" class="my.sample.MyLogComposer"> <output name="myStdOut1" type="stdout"/> </logComposer> <logComposer name="Log2" class="my.sample.MyLogComposer2"> <output name="myLogOut" type="logComposer"> <param name="target" value="Log1"/> </output> </logComposer> .... </logConfig>
ログの出力レベルは、levelタグで指定します。
<logComposer name="mylog"> <level>20</level> <output name="mylogOut" type="stdout"/> </logComposer>
標準ログの出力レベルは初期化パラメタのlogLevelで指定することもできます。
初期化パラメタとlevelタグの両方で指定した場合、初期化パラメタの指定が優先されます。
logComposerタグのqueue属性で、ログが利用するキャッシュを指定することができます。-1を指定するとキャッシュは無効となります。
<logComposer name="mylog" queue="100"> <output name="mylogOut" type="stdout"/> </logComposer>
標準ログのキャッシュ無効の設定は初期化パラメタのuji.log.enablecacheで指定することもできます。
初期化パラメタでキャッシュ無効の指定をし、logComposerタグのqueue属性を指定した場合、初期化パラメタの指定が優先されます。
注意
複数の管理名で同一の出力先へ出力する場合は、ログの混在を回避するために、ログ定義ファイルのoutputタグのtype属性に"logComposer"を指定して他の管理名の出力先へ出力するようにしてください。次に例を示します。
<logComposer name="system"> <output name="sysStdOut" type="stdout"> </output> </logComposer> <logComposer name="mylog01"> <output name="myLogOut" type="logComposer"> <!-- 定義名"system"のoutputタグの出力先へ出力 --> <param name="target" value="system"/> </output> </logComposer>
出力先にfileを指定した場合は、出力ファイルの自動分割が可能です。
下記の例では最大ファイル数(number)と、ファイル当たりのバイト数(byte)を指定しています。
その他日付形式(dateFormat)、分割時間(timeOffset)を指定した、日付による分割も指定できます。
詳細は“定義ファイルリファレンス”を参照してください。
<logComposer name="system"> <output name="sysFileOut" type="file"> <param name="path" value="/var/log"/> <param name="prefix" value="myapp"/> <param name="extension" value=".log"/> <param name="number" value="10"/> <param name="byte" value="60000"/> </output> </logComposer>
commonタグのパラメタにwatchPeriodを指定することで、指定の時間間隔でログ出力クラスの再設定を行います。
例では、10分間隔でログ定義ファイルを参照します。
<?xml version="1.0" encoding="UTF-8" ?> <logConfig xmlns=http://interstage.fujitsu.com/schemas/uji/logConf xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://interstage.fujitsu.com/schemas/uji/logConf http://interstage.fujitsu.com/schemas/uji/logconf.xsd"> <config> <version>7.0</version> </config> <common> <param name="watchPeriod" value="10"/> </common> <logComposer name="system"> <output name="systemOutput" type="stderr"/> </logComposer> .... </logConfig>
注意
LogComposerのメソッドにより、直接設定の変更を行った場合、ログ定義ファイルの随時更新までの間、メソッドで設定された状態が有効となります。
ログの再設定は、定義ファイルの更新時刻が前回の参照時刻から更新された場合に行います。