私はjava.util.logging機能の使い方を理解しようとしています。すべてのチュートリアルでは、メインクラスからログファイルにログを出力する方法が示されていますが、さまざまなクラスのファイルにどのようにログできるかはわかりません。私はWebサービスとWebサービスクライアントを持っており、Webサービスクライアントを使用している間にWebサービスでエラーを記録できるようにしたいと考えています。いくつかのクラスとパッケージにわたって1つのファイルにjava loggerを追加
私はロガークラスを作成しようとしましたが、38個の空のログファイルがありました。 Webサービス上の各クラスで呼び出されるロガーを1つ作成するにはどうすればよいですか? Webサービスには2つの異なるパッケージとさまざまなクラスがあります。
私の検索では、シングルトンロガークラスのアイデアが出てきました。私はそれを実装する方法を把握しようとしている:
public class Logger{
private static Logger self = new Logger();
//empty private constructor
private Logger(){
}
//synchronized getInstance
public static synchronized Logger getInstance(){
if (self == null)
self = new Logger();
return self;
}
//prevent cloning
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
//synchronized logging
public synchronized void debug(String msg){
}
public synchronized void info(String msg){
}
public synchronized void fatal(String msg){
}
}
を私の他のクラスでこれを呼び出すには、私は各クラスでのFileHandlerを作成する必要があるでしょうか?
「ルート」ロガーを設定する方法がわかります。 私はクラスを持っている場合: client.alerts.AlertHandler client.alerts.AlertTimer client.alerts.Connect client.weather.Weather client.weather.WeatherData は、私は私ができるので、これらのそれぞれに何を置きます1つのファイルにログする。私が見つけたすべての例は、1つのクラスから1つのログファイルへのログの記録方法を示しています。私は複数のクラスから1つのログファイルにログを取る方法を知らない。私の「ロガー階層」の根はどこですか? – ravun
JDKでは、 "client"という名前のロガーが適切なルートロガーになります。ロガーに親がなくなるまで、Logger.getParent()を使用してロガーの親を取得することもできます。ルート・ロガーを使用している場合は、Logger.addHandler()を使用してロガーにハンドラーを追加してください。最後にHandler.setLevel()を使用してハンドラのログレベルを調整すると、すべて設定されているはずです。 – Bombe