java - 有没有办法从 java.util.logging.Logger 输出中删除信息行?

标签 java logging

像这样使用 java.util.logging.Logger 输出一些日志到控制台:

public static void main(String[] args) {
    Logger logger = Logger.getLogger("test");
    logger.info("Hello Wolrd!");
}

输出是:

FEB 16, 2012 10:17:43 AM com.abc.HelloWorld main
INFO: Hello World.

这似乎没问题,但是......

我们在所有 Ant 任务(内部标准)中使用 java.util.logging.Logger,并且我们有一个大型 ant 项目。一个完整周期的控制台输出可以大于300KB,其中我们自己的logger输出至少需要50。

现在我不想看到 Level.INFO 输出的有关时间、类名和方法的信息。此外,信息行让人很难专注于自定义消息。

那么有什么方法可以从每个输出(或仅从每个 Level.INFO 输出)中删除第一行(时间戳、类和方法的信息)?

最佳答案

参见 How do I get java logging output to appear on a single line? .但是,唯一的区别是删除了第一行,而不是将其放在一行上。

要仅针对 INFO 级别执行此操作,请扩展您要有条件地修改的格式化程序(例如 SimpleFormatter),并覆盖 format 方法.你可以这样做:

public String format(LogRecord record){
  if(record.getLevel() == Level.INFO){
    return record.getMessage() + "\r\n";
  }else{
    return super.format(record);
  }
}

如果您仅为 INFO 执行此操作,您可能不需要“INFO:”前缀 - 但如果您愿意,可以重新添加它。

关于java - 有没有办法从 java.util.logging.Logger 输出中删除信息行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9304784/

相关文章:

java - 链表中的节点可以有动态数组吗?

java - wildcare 泛型参数与无泛型参数之间的区别

c# - 如何编写记录器

scala - Gatling - 如何在 Scala 中设置 gatling 控制台日志级别

java - 如何将日期对象存储到MySql中的HH :MM format?

Java从其他文件导入

Java:NoSuchMethodException

c# - entlib 6 记录器实例化错误

ruby-on-rails - 在生产模式下登录 Ruby on Rails

logging - Spark 输出: log-style vs progress-style