gpt4 book ai didi

Java 记录器 - "No line break"和 "explicit class logging"问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:59:31 25 4
gpt4 key购买 nike

我目前正在努力解决有关 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com