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"/>才能在控制台、和文件中打印日志
4、RollingFile标签参数说明:
? ? ?4.1:、append这个参数是是否将日志追加的方式打印,如果为false时,tomcat重新后,log.txt这里原有的日志就会清空,如果为true时,tomcat重启后,log.txt日志不会清空
? ? ?4.2、TimeBasedTriggeringPolicy标签的interval属性是每天生成一个日志文件,RollingFile标签的filePttern属性是备份文件的格式
?
原文:http://huweiyi.iteye.com/blog/2296312