0
すべてをJULでログに記録し、すべてをログファイルに書き込むFileHandlerを設定しますが、FileHandlerと同じクラスにあるコンテンツのみをログに記録します。設定ファイルを使用せずにFileHandlerをグローバルに設定するにはどうすればよいですか?Java UtilログセットFileHandler global
すべてをJULでログに記録し、すべてをログファイルに書き込むFileHandlerを設定しますが、FileHandlerと同じクラスにあるコンテンツのみをログに記録します。設定ファイルを使用せずにFileHandlerをグローバルに設定するにはどうすればよいですか?Java UtilログセットFileHandler global
logger.getParent()がnullを返すまで、Loggerの親を歩いて他のハンドラを見つけ出し、見つけたハンドラをすべて削除し、logger.setUserParentHandlers(true)を呼び出すことができます。 Logger.addHandler(myOwnHandler)を呼び出すルートLoggerインスタンスが見つかりました。各ロガーでlogger.setLevel(...)を呼び出して、ハンドラーがすべてのロギング・アクティビティーを確実に確認できるようにすることもできます。サンプルコードは次のとおりです。
private static final Logger LOGGER = Logger.getLogger(MyMainClass.class.getName());
static {
Logger logger = LOGGER.getParent();
while(logger != null) {
Handler[] handlers = logger.getHandlers();
if(handlers != null) {
for(Handler handler : handlers) {
logger.removeHandler(handler);
}
}
if(logger.getParent() == null) {
logger.addHandler(SystemErrHandler.newInstance());
}
else {
logger.setUseParentHandlers(true);
}
if(logger.getName().startsWith("my.sample.package")) {
logger.setLevel(Level.ALL);
}
logger = logger.getParent();
}
}