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

时间:2012-02-16 02:41:47

标签: 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,其中我们自己的记录器输出至少达到50。

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

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

1 个答案:

答案 0 :(得分:6)

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:”前缀 - 但如果您愿意,可以重新添加。