私は図書館を書いています。このライブラリは、log4jロガーとjava.util.loggingロガーを使用するアプリケーションで使用できます。
そこで、両方のロガーをカプセル化するクイックラッパークラスを作成しました。アプリケーションが一方または両方のロガーを設定できるようにします。そして私のライブラリでは、カプセル化されたクラスを使用していずれかのロガーに出力します。
私の質問は、多くのスレッドがラッパークラスの同じインスタンスを同時に使用して、クラスのメソッド(たとえば、以下のfatal())を使用してメッセージをログに記録できるため、これらのメソッドをスレッドセーフにするためにどのような手順を実行する必要がありますか?
public class MultiLogger {
private static org.apache.log4j.Logger _log4jLogger = null;
private static java.util.logging.Logger _javaUtilLogger = null;
private MultiLogger () {
}
// log4j FATAL, log util SEVERE
public void fatal (Object message) {
if (_log4jLogger != null) {
_log4jLogger.log("", Level.FATAL, message, null);
}
if (_javaUtilLogger != null) {
_javaUtilLogger.severe((String) message);
}
}
...
}
他のコメントもありがたいです。