我目前正在努力解决有关 java.util.logging.Logger 的两个问题:
1)我想要一个像“info()/fine()”方法这样的(方便的)方法,只是这些方法不应该在输出后插入换行符(像System.out.print和println这样的功能)。我已经重写了 format() 方法 - 在日志记录中添加一个“无换行标志”并在 format 方法中分析它是否正确,或者这是否太慢(因为我正在使用实时应用程序)。
哪种方法是实现这样的目标的正确方法?
2)目前我有一个工厂类,它创建所需的记录器(文件记录和控制台记录之间存在差异) - 但我无法真正找出如何详细告诉记录器哪些包/类(“模块”)要记录,哪些不记录。或者我应该检查每个类中的调试标志,然后创建记录器(debug==true)或不创建? 另外,如果可能的话,我想通过源代码而不是 Logging-Properties 文件来完成所有需要的设置...
我有一种轻微的感觉,关于 Logger,我还没有完全理解^^
提前致谢!
最佳答案
关于#2 - 您应该将所有这些信息放入日志配置文件中。重点在于,您可以将此类内容从代码中“切分”到属性文件中。
基本上 - 您总是在代码中调用 logger.debug(),如果日志记录配置为过滤调试消息,那么您将看不到 hem 的输出
我见过这样的代码
if(logger.debugenabled()){
logger.debug();
}
当我对此提出质疑时,人们说他们不希望 logger.debug 调用带来性能损失。我的拙见是,这仅与一小部分应用程序相关,您可能应该保留 logger.debug 调用,并让日志记录框架来处理它。
哦 - 我检查了控制台附加程序的源代码。看起来换行符是硬编码的。
for (int i = 0; i < len; i++) {
this.writer.write(s[i]);
this.writer.write(Layout.LINE_SEP);
}
}
}
关于Java 记录器 - "No line break"和 "explicit class logging"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1177113/