我目前正在努力解决有关java.util.logging.Logger的两个问题:
1)我希望有一个(便捷)方法,比如“info()/ fine()”方法,只是那些方法不应该在输出后插入换行符(System.out.print和println之类的功能) )。我已经覆盖了format()方法 - 如果只是在日志记录中添加一个“no-linebreak-flag”并在格式化方法中对此进行分析,或者这会太慢(因为我使用的是实时应用“。
哪种方法可以达到这样的目标?
2)目前我有一个工厂类,它创建了所需的Logger(我在FileLogging和Console Logging之间有所区别) - 但是我真的无法知道如何详细告诉Logger哪些包/类(“模块”)记录,哪些不记录。或者我应该检查每个类中的Debug标志,然后创建Logger(debug == true)或不? 另外,我想通过源代码而不是Logging-Properties文件进行所有必要的设置,如果可能的话......
我有一种轻微的感觉,那些关于Logger的东西我还不太了解^^
提前致谢!
答案 0 :(得分:1)
基本上 - 你总是在代码中调用logger.debug(),如果日志配置为过滤调试消息,那么你将看不到下摆的输出
我见过像
这样的代码if(logger.debugenabled()){
logger.debug();
}
当我质问它时,人们说他们不想要logger.debug调用的性能问题。我的拙见是,这只与微不足道的应用程序比例相关,你应该只留下logger.debug调用,让日志框架处理它。
哦 - 我检查了控制台appender的源代码。看起来像换行符是硬编码的。
for (int i = 0; i < len; i++) {
this.writer.write(s[i]);
this.writer.write(Layout.LINE_SEP);
}
}
}