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

2022-09-04 22:38:02

使用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,其中我们自己的记录器输出至少为50KB。

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

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


答案 1

请参阅如何让 Java 日志记录输出显示在一行上?。但是,唯一的区别是删除第一行,而不是将其放在一行上。

若要仅对级别执行此操作,请扩展要有条件修改的格式化程序(例如 ),并重写该方法。你可以做这样的事情:INFOSimpleFormatterformat

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

如果您这样做只是为了 ,您可能不需要“INFO:”前缀 - 但如果您愿意,可以重新添加它。INFO


答案 2

推荐