使用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输出中删除)?
答案 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:”前缀 - 但如果您愿意,可以重新添加。