看到别人的控制台输出是那么美观,再看看自己的是那么凌乱。作为天秤座的一只小白,这怎么能忍受。。。于是,有了这篇log4j2的彩色日志。
先贴上测试结果:
首先,需要两个jar包。如果是maven工程,添加两个依赖。l
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.0-rc1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
接着添加配置文件,在resources下配置log4j2.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%highlight{[%p] %-d{yyyy-MM-dd HH:mm:ss} --> %l%n[massage] %m%n}{FATAL=red, ERROR=red, WARN=yellow, INFO=cyan, DEBUG=cyan,TRACE=blue}"/>
</Console>
</appenders>
<loggers>
<root level="info">
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
具体的配置内容就不说了,网上一大推。简单解释一下这个xml。这个只配置了日志输出到控制台。
<root level="info"> 有trace debug,info,warn,error,几个级别,建议配置info,这样大量的trace和debug信息就不会输出到控制台了。
支持彩色日志最关键的这一行配置:这是真正输出到控制台的内容格式配置。
<PatternLayout pattern="%highlight{[%p] %-d{yyyy-MM-dd HH:mm:ss} --> %l%n[massage] %m%n}{FATAL=red, ERROR=red, WARN=yellow, INFO=cyan, DEBUG=cyan,TRACE=blue}"/>
%p:信息级别
%d:时间,后面一串是日期格式
%l :输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
%n: 换行
%m:最重要的一个,这代表真正的日志内容
%highlight: 重点来了,前面都是普通的日志配置,加上这个可以为每个级别定义自定义颜色,就是不同级别的信息,用不同的颜色显示。
{FATAL=red, ERROR=red, WARN=yellow, INFO=cyan, DEBUG=cyan,TRACE=blue}
这一行就是自定义颜色显示。
来个测试,写一个测试类:
import org.apache.log4j.Logger;
public class test {
private static Logger logger = Logger.getLogger(test.class);
public static void main(String[] args) {
// 记录debug级别的信息
logger.debug("This is debug message.");
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");
// 记录warn级别的信息
logger.warn("This is warn message.");
}
}
测试结果如文章开头。