log4j1.*版本在打印日志的时候不支持占位符,在打印日志的时候需要拼接起来。所以我就讲log4j版本改为 2.*,log4j2.*版本支持占位符,在代码看上去就美观了很多。
首先下载log4j包地址:http://logging.apache.org/log4j/2.x/download.html
将log4j-api-2.*.jar、log4j-core-2.*.jar包放入lib文件夹下
创建配置文件log4j 2.*有xml、json配置两种文件方式,并没有1.*版本的properties配置方式
下面就以xml配置方式为例
在src下创建一个log4j2.xml文件,注意是log4j2.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="off">
<Properties>
<Property name="LOG_HOME">${sys:catalina.home}/logs/AppNetAgeService</Property>
<Property name="LOG_NAME">log.txt</Property>
</Properties>
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread][%file:%line] - %msg%n"/>
</Console>
<RollingFile name="log" fileName="${LOG_HOME}/${LOG_NAME}" filePattern="${LOG_HOME}/${LOG_NAME}.%d{yyyy-MM-dd}" append="true">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread][%file:%line] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
<DefaultRolloverStrategy max="180" />
</RollingFile>
</appenders>
<loggers>
<root level="DEBUG">
<appender-ref ref="Console"/>
<appender-ref ref="log"/>
</root>
</loggers>
</configuration>
注意事项:
1、<root level="DEBUG"></root>这个标签中level等级,、log4j优先级分别为FATAL、ERROR、WARN、INFO、DEBUG, 如果level的值设置为ERROR,那么只有FATAL、ERROR等级的日志才会打印
2、 <Property name="LOG_HOME">${sys:catalina.home}/logs/AppNetAgeService</Property>,1.*版本中获取tomcat路径是${catalina.home}, log4j2.*版本中获取tomcat路径是${sys:catalina.home}
3、 要在<root>标签中添加<appender-ref ref="Console"/>,<appender-ref ref="log"/>才能在控制台、和文件中打印日志