Apache的開源項目log4j是一個功能強大的日誌組件,提供方便的日誌記錄。html
使用log4j須要導入log4j-core-xx.jar和log4j-api-xx.jarjava
log4j1.x版本只須要導入一個jar包,經過一個*.properties 或 *.xml的文件做爲主配置文件;apache
log4j2.x版本都要導入兩個jar包,採用*.xml,*.json或者*.jsn文件做爲配置文件;json
在默認狀況下,系統選擇配置文件的優先級以下:api
Log4j最新版本是apache-log4j-2.7網絡
日誌級別(Logger):從高到低有FATAL、ERROR、WARN、 INFO、DEBUG、TRACE,分別用來指定這條日誌信息的重要程度;app
日誌信息輸出目的地(Appender):日誌輸出目的地能夠是控制檯、文件和網絡設備等;測試
日誌信息輸出格式(Layout):控制了日誌信息的顯示內容。spa
Log4j有默認的配置,日誌級別是ERROR,輸出到控制檯debug
log4j2.xml(放在src目錄下,運行時自動加載)
<?xml version="1.0" encoding="UTF-8"?> <!-- Configuration節點的屬性status,用於設置log4j自身內部運行日誌輸出(只輸出到控制檯),能夠不設置,當設置成trace時,你會看到log4j2內部各類詳細輸出 --> <configuration status="OFF"> <!--定義全部的appender--> <appenders> <!--配置輸出控制檯--> <Console name="Console" target="SYSTEM_OUT"> <!--控制檯只輸出level及以上級別的信息(onMatch),其餘的直接拒絕(onMismatch)--> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/> <!--這個都知道是輸出日誌的格式--> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </Console> <!--打印出日誌到文件,append屬性設置爲false,每次運行程序會自動先清空以前的日誌--> <File name="error" fileName="log/error.log" append="false"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File> <!--打印出日誌到文件,單個日文件大小超過size指定的值,則該日誌會自動存入按年份-月份創建的文件夾下面並進行壓縮,做爲存檔--> <RollingFile name="RollingFile" fileName="log/app.log" filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/> <SizeBasedTriggeringPolicy size="50MB"/> <!-- DefaultRolloverStrategy屬性如不設置,則默認爲最多同一文件夾下7個文件,這裏設置了20. --> <DefaultRolloverStrategy max="20"/> </RollingFile> </appenders> <!--定義全部logger,appender引入到logger纔會生效--> <loggers> <!-- 每一個logger都有一個日誌級別,用來控制日誌的輸出。未分配級別的logger將自動繼承它最近的父logger的日誌級別 --> <!-- additivityz值爲true,若是logger也知足root的條件,會出現打印兩遍的狀況。 --> <logger name="cn.iborder.test.TestLog4j" level="trace" additivity="false"> <appender-ref ref="Console"/> <appender-ref ref="error"/> </logger> <!--默認root的logger--> <root level="trace"> <appender-ref ref="Console"/> </root> </loggers> </configuration>
二、測試實例
package cn.iborder.test.page; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.Test; public class TestLog4j { //經過指定的名字得到logger private static Logger logger = LogManager.getLogger(TestLog4j.class.getName()); @Test public void test1() { logger.trace("trace級別"); logger.debug("debug級別"); logger.info("info級別"); logger.warn("warn級別"); logger.error("error級別"); logger.fatal("fatal級別"); } }