- PR -

みなさんはどうやってLoggerを記述していますか?

1
投稿者投稿内容
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2006-06-05 01:03
何度もすみません。
今回の業務で初めてjava.util.loggingのLoggerを使用することに
なったのですが、みなさんはどうやって使っているか参考にしたく
投稿させていただきました。
ちなみに自分は、下記のように
c:/workspace/MyClass/log
(myclassはコンテキストルートになります。)
に格納しています。
あと、同じログの名前で追記をしたかったのでstaticで
記入しました。
もし、おかしい所やこんな方法でやっているというのあが
ありましたら教えてください。よろしくお願い致します。

//ログ
private static Logger logger = Logger.getLogger("myclass.logging");

static {

try {
FileHandler fh = new FileHandler("c:¥¥workspace¥¥myclass¥¥log¥¥myclass.log", 100000, 1, true);
fh.setFormatter(new SimpleFormatter());
logger.addHandler(fh);
logger.setLevel(Level.INFO);

} catch (SecurityException e){
} catch (IOException e){
}

}
まさ
ベテラン
会議室デビュー日: 2002/11/15
投稿数: 74
投稿日時: 2006-06-06 13:27
引用:

今回の業務で初めてjava.util.loggingのLoggerを使用することに
なったのですが、



どのような業務ですかね?
Java アプリケーションで使用するなら設定ファイルを置いておくのが便利です。
当方がよくやる方法を記述します。

1.以下のような設定ファイルを作成
コード:
handlers=myapplication.OriginalHandler,java.util.logging.ConsoleHandler,java.util.logging.FileHandler

myapplication.OriginalHandler.level=ALL

java.util.logging.ConsoleHandler.level=WARNING
java.util.logging.ConsoleHandler.formatter=myapplication.OriginalFormatter

java.util.logging.FileHandler.level=ALL
java.util.logging.FileHandler.formatter=myapplication.OriginalFormatter
java.util.logging.FileHandler.count=5
java.util.logging.FileHandler.pattern=../logs/applog%u_%g.log

myapplication.level=INFO



handlers は使用するログハンドラ。
それぞれのハンドラに対してログのレベルなどのオプションを指定。
myapplication.level はパッケージ "myapplication" (ロガーの名称に一致)のログレベル。

設定ファイルの記述方法は LogManager の Javadoc を中心に記述されています。
各ハンドラに指定可能なオプションはそれぞれのハンドラの Javadoc に記述されています。

2.アプリケーション初期化時に LogManager に読み込ませる。
コード:
InputStream inputStream;
imputStream = <1.で作成した設定ファイルの読み込みストリーム>;

LogManager logManager;
logManager = LogManager.getLogManager();
logManager.readConfiguration(inputStream);




ちなみに、ログレベルはロガーごとに設定することが可能で、
サブパッケージのオプションを記述していない場合には上位パケージのオプションが引き継がれます。
1.の設定ファイルで、 "myapplication" パッケージのレベルは Level.INFO を指定しており、
"myapplication.subpackage" パッケージのレベルは "myapplication" のレベルを引き継ぎます。
"myapplication.subpackage" のログレベルを Level.ALL にしたい場合には、

コード:
myapplication.subpackage=ALL


を指定することで、"myapplication.subpackage" パッケージ以下のレベルだけ
ALL に指定するといったことができます。

こうしておくと、リコンパイルすることなくログレベルを変えたり、
ログファイルのパス・名称・ローテート数を変えられたりして便利です。

参考になったかな?
1

スキルアップ/キャリアアップ(JOB@IT)