Java Logger - “无换行符”和“显式类日志记录”问题

时间:2009-07-24 11:37:53

标签: java line break logging

我目前正在努力解决有关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的东西我还不太了解^^

提前致谢!

1 个答案:

答案 0 :(得分:1)

<#>在#2上 - 您应该将所有信息放在日志配置文件中。重点在于,您可以从代码中“切片”这些内容,并将其切换到属性文件中。

基本上 - 你总是在代码中调用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);
      }
    }
  }