1 import org.apache.log4j.Logger; 2 import org.apache.log4j.PropertyConfigurator; 3 4 /** 5 * 記錄日誌到指定文件 6 * 7 * @author He 8 * @date 2018/5/16 9 */ 10 public class Log4jDemo { 11 12 static Logger logger = Logger.getLogger(Log4jDemo.class); 13 14 public static void main(String[] args) { 15 PropertyConfigurator.configure("config/log4j.properties"); 16 logger.info("我記錄在Log4jDemo 文件中...."); 17 logger.error("在Log4jDemo 文件中出現異常...."); 18 } 19 }
2. 在項目根目錄下(即與src平級)建立config文件夾,新建log4j.properties 文件java
配置以下:apache
# 聲明日誌類型 log4j.rootLogger = INFO,log4jDemo,test # 配置1 - 即日誌Id名爲 com.exampl.log.Log4jDemo 的日誌配置(通俗來說就是日誌的標識,只不過該標識可在多個類中調用) log4j.logger.log4jDemo=com.exampl.log.Log4jDemo log4j.additivity.log4jDemo = false log4j.appender.log4jDemo=org.apache.log4j.RollingFileAppender # 輸出級別(若是定義的ERROR級別,那麼打印的INFO級別的日誌就不會記錄在文件中,由於INFO的級別比ERROR要) log4j.appender.log4jDemo.Threshold=ERROR # 輸出的日誌文件位置及文件名稱 log4j.appender.log4jDemo.File=logs/Log4jDemo.log # 佈局類型 log4j.appender.log4jDemo.layout=org.apache.log4j.PatternLayout # 佈局模板 log4j.appender.log4jDemo.layout.ConversionPattern=%d %-5p [%l] - %m%n # 輸出的日誌文件的最大文件大小,單位b(字節) log4j.appender.log4jDemo.MaxFileSize=5242880 # 日誌的循環週期 log4j.appender.log4jDemo.MaxBackupIndex=3
運行main方法 日誌輸出以下:服務器
3.關於log4j.properties 一些配置:app
FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7
org.apache.log4j.ConsoleAppender(控制檯),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件),
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件),
org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)
org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式),
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)
%m 輸出代碼中指定的消息 %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL %r 輸出自應用啓動到輸出該log信息耗費的毫秒數 %c 輸出所屬的類目,一般就是所在類的全名 %t 輸出產生該日誌事件的線程名 %n 輸出一個回車換行符,Windows平臺爲「\r\n」,Unix平臺爲「\n」 %d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyy MMM dd HH:mm:ss , SSS},輸出相似:2002年10月18日 22 : 10 : 28 , 921 %l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java: 10 )
1)在程序中調用BasicConfigurator.configure()方法:給根記錄器增長一個ConsoleAppender,輸出格式經過PatternLayout設爲"%-4r [%t] %-5p %c %x - %m%n",還有根記錄器的默認級別是Level.DEBUG.
2)配置放在文件裏,經過命令行參數傳遞文件名字,經過PropertyConfigurator.configure(args[x])解析並配置;
3)配置放在文件裏,經過環境變量傳遞文件名等信息,利用log4j默認的初始化過程解析並配置;
4)配置放在文件裏,經過應用服務器配置傳遞文件名等信息,利用一個特殊的servlet來完成配置。函數
rollover次數 | 輸出的目標 | 壓縮的日誌文件 | 描述 |
---|---|---|---|
1 | foo.log |
foo-1.log | 在第一次rollover 時,foo.log會被重命名爲foo-1.log。同時會建立一個新的foo.log 並開始寫入。 |
2 | foo.log |
foo-1.log, foo-2.log | 在第二次發生rollover 時,foo-1.log會重命名爲foo-2.log而且foo.log會重命名爲foo-1.log。同時會建立一個新的foo.log 並開始寫入。 |
3 | foo.log | foo-1.log, foo-2.log, foo-3.log | 在第三次發生rollover 時,foo-2.log會重命名爲foo-3.log。foo-1.log重命名爲foo-2.log,foo.log會重命名爲foo-1.log。同時會建立一個新的foo.log 並開始寫入。 |
4 | foo.log | foo-1.log, foo-2.log, foo-3.log | 在第四次和隨後的rollover 時,foo-3.log會被刪除,foo-2.log重命名爲foo-3.log。foo-1.log重命名爲foo-2.log。foo.log重命名爲foo-1.log。後面同理 |
每次當文件達到指定文件大小(MaxFileSize)時,日誌文件就會按上述規則來生成。佈局