eclipses中使用ANSIConsole插件,让log4j 显示不同字体颜色

(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)结果却总是差强人意啊
eclipses中使用ANSIConsole插件,让log4j 显示不同字体颜色_第1张图片
(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());

eclipses中使用ANSIConsole插件,让log4j 显示不同字体颜色_第2张图片
控制台console输出结果为:
eclipses中使用ANSIConsole插件,让log4j 显示不同字体颜色_第3张图片
(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());
        }
        }

eclipses中使用ANSIConsole插件,让log4j 显示不同字体颜色_第4张图片
(5)我的控制台颜色也给出来,可以看看效果
eclipses中使用ANSIConsole插件,让log4j 显示不同字体颜色_第5张图片

你可能感兴趣的:(web基础)