1

我目前正在努力解决有关 java.util.logging.Logger 的两个问题:
1)我想要一个(方便)方法,如“info()/fine()”方法,只有那些方法应该不要在输出后插入换行符(System.out.print 和 println 等功能)。我已经覆盖了 format() 方法 - 只是在日志记录中添加一个“no-linebreak-flag”并在 format 方法中分析它会不会太慢(因为我正在使用实时应用程序”。这将是实现这样的事情的正确方法?

2)目前我有一个工厂类,它创建所需的记录器(我在 FileLogging 和控制台记录之间有所不同) - 但我真的不知道如何详细地告诉记录器哪些包/类(“模块”)记录和这不是。还是我应该检查每个类中的调试标志,然后创建记录器(debug==true)或不?此外,如果可能的话,我想通过源代码而不是 Logging-Properties 文件进行所有需要的设置......

感觉Logger有点不太懂^^

提前致谢!

4

1 回答 1

1

在#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);
      }
    }
  }
于 2009-07-24T11:47:05.693 回答