1.Java類使用log4j,代碼如下:
package com.joyintech.ak.fault.servlet;
import org.apache.log4j.Logger;
public class Test {
private static Logger logger = Logger.getLogger(Test.class);
public static void main(String[] args) {
logger.debug("Hello World");
}
}
2.配置文件log4j.properties
log4j.logger.com.joyintech.ak.fault.servlet.Test= DEBUG, test
log4j.appender.test=org.apache.log4j.FileAppender
log4j.appender.test.File=D://logs/test.log
log4j.appender.test.layout=org.apache.log4j.PatternLayout
log4j.appender.test.layout.ConversionPattern=%d %p [%c] - %m%n
下面是使用RollingFileAppender的寫法,MaxFileSize限制日誌文件大小,當日志文件大於10MB,把之前的test.log改爲test.log.1,剛生成的則是test.log。
MaxBackupIndex是限制生成日誌的個數不能超過十個。
log4j.logger.com.joyintech.ak.fault.servlet.Test= DEBUG, test
log4j.appender.test=org.apache.log4j.RollingFileAppender
log4j.appender.test.File=D://logs/test.log
log4j.appender.test.Encoding=UTF-8
log4j.appender.test.MaxFileSize=10MB
log4j.appender.test.MaxBackupIndex=10
log4j.appender.test.layout=org.apache.log4j.PatternLayout
log4j.appender.test.layout.ConversionPattern=%-d %t %-5p [%c{1}:%L] %m%n
下面是使用DailyRollingFileAppender的寫法,根據時間生成日誌名,比如今天是2010-01-13, 到明天這個文件將更名爲test.log2010-01-13.log
log4j.logger.com.joyintech.ak.fault.servlet.Test= DEBUG, test
log4j.appender.test=org.apache.log4j.DailyRollingFileAppender
log4j.appender.test.File=D://logs/test.log
log4j.appender.test.DatePattern=yyyy-MM-dd'.log'
log4j.appender.test.layout=org.apache.log4j.PatternLayout
log4j.appender.test.layout.ConversionPattern=%-d %t %-5p [%c{1}:%L] %m%n
3.控制檯的打印截圖:
4.生成日誌路徑的截圖:
5.生成日誌報錯LOG4J:ERROR Failed to rename
出現這個錯誤,是因爲日誌被其他線程佔用,有兩種解決辦法。
第一種檢查tomcat的server.xml是否配置了:
<Context path="" docBase="xxxx" debug="0" reloadable="true"/>
如果配置了刪除則解決問題
第二種則是重寫DailyRollingFileAppender這個方法。
代碼下載地址:https://pan.baidu.com/s/1H3WOCjM72mA_m0GUgb4gtA
配置文件中使用自己重寫的就可:
log4j.logger.com.joyintech.ak.fault.servlet.VehicleFaultServlet= DEBUG, vehicleFaultServlet
log4j.appender.vehicleFaultServlet=com.joyintech.ak.fault.com.DailyRollingFileAppender
log4j.appender.vehicleFaultServlet.File=E:/logs/vehicleFault.log
log4j.appender.vehicleFaultServlet.DatePattern=yyyy-MM-dd'.log'
log4j.appender.vehicleFaultServlet.layout=org.apache.log4j.PatternLayout
log4j.appender.vehicleFaultServlet.layout.ConversionPattern=[%d] [%-5p] %c %n--%m--%n