(1)使用ANSIConosle插件使输出在控制台的日志根据级别产生不同的颜色
参考博客:http://www.javatang.com/archives/2015/03/16/17361179.html
点我点我:Eclipse中输出带颜色的log4j日志信息
需要在log4j配置文件中设置自定义的layout,并且可以设置各种日志级别的颜色:
log4j.rootLogger=INFO, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=util.log4j.ColoredPatternLayout
log4j.appender.Console.layout.ErrorColor=red
log4j.appender.Console.layout.DebugColor=blue/green/bright
(2)结果却总是差强人意啊
(3)于是就对format方法debug,发现根本进不去if里的条件,每次进去else语句体,于是测试了一下:
System.out.println("event对象:"+event+",event级别为:"+event.getLevel());
System.out.println("event.getLevel()与Level.INFO值相等吗?"+ event.getLevel().equals(Level.INFO));
System.out.println("event.getLevel()与Level.INFO对象引用相等吗?"+ (event.getLevel() == Level.INFO));
System.out.println("log4j配置文件里配置的日志级别为:"+Level.INFO+",所属类别为:"+Level.INFO.getClass());
控制台console输出结果为:
(4)最后,将format方法贴出
@Override
public String format(LoggingEvent event){
if( event.getLevel() == Level.FATAL){
return fatalErrorColor+super.format(event)+END_COLOR;
}else if( event.getLevel().equals(Level.ERROR)){
return errorColor+super.format(event)+END_COLOR;
}else if( event.getLevel().equals(Level.WARN)){
return warnColor+super.format(event)+END_COLOR;
}else if( event.getLevel().equals(Level.INFO)){
return infoColor+super.format(event)+END_COLOR;
}else if( event.getLevel().equals(Level.DEBUG)){
return debugColor+super.format(event)+END_COLOR;
}else{
throw new RuntimeException("Unsupported Level "+event.toString());
}
}
(5)我的控制台颜色也给出来,可以看看效果