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

标签 java line break logging

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

相关文章:

Java替换文本文件中的行

java - 当用户在输入中输入特定字符串时中断程序

c - break 语句在 else 语句中不起作用

php - 使用 CSS 打断文本

java - 计算三角形的边长

java - 如何递归地用0和1填充矩阵?

java - 删除特定按钮

java - 使用 MediaRecorder 在 Android 上录制屏幕时无法获取 Surface

c++ - 如何在 C++ 中表示线段的 vector 方程?

java - 细进度条