2017年5月6日,近來又發現一篇關於log4j2的使用,很是詳細Log4j2 簡明教程 html
去年轉了一篇關於log4j2的使用,那時只是簡單的轉文章,並無使用。如今在整理以往的資料,打算所有使用log4j2,如下是過程。程序員
一、pom.xml添加apache
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.5</version> </dependency>
二、log4j2配置文件,在resources中添加Log4j2.xml文件,內容以下,詳細可參考Log4j2使用app
<?xml version="1.0" encoding="UTF-8"?> <!-- 日誌級別 trace: 是追蹤,就是程序推動如下,你就能夠寫個trace輸出,因此trace應該會特別多,不過不要緊,咱們能夠設置最低日誌級別不讓他輸出。 debug: 調試麼,我通常就只用這個做爲最低級別,trace壓根不用。是在沒辦法就用eclipse或者idea的debug功能就行了麼。 info: 輸出一下你感興趣的或者重要的信息,這個用的最多了。 warn: 有些信息不是錯誤信息,可是也要給程序員的一些提示,相似於eclipse中代碼的驗證不是有error 和warn(不算錯誤可是也請注意,好比如下depressed的方法)。 error: 錯誤信息。用的也比較多。 fatal: 級別比較高了。重大錯誤,這種級別你能夠直接中止程序了,是不該該出現的錯誤麼!不用那麼緊張,其實就是一個程度的問題。 --> <Configuration status="OFF"> <!-- 定義日誌存放目錄 --> <properties> <property name="logPath">logs</property> </properties> <!--先定義全部的appender(輸出器) --> <Appenders> <!--輸出到控制檯 --> <Console name="ConsoleLog" target="SYSTEM_OUT"> <!--只輸出level及以上級別的信息(onMatch),其餘的直接拒絕(onMismatch) --> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> <!--輸出日誌的格式 --> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36}:%L - %msg%n" /> <!-- <PatternLayout pattern="%-d [%t] %-5p %c{1}:%L - %m%n" /> --> </Console> <!--輸出到文件 --> <File name="FileLog" fileName="${logPath}/error.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" /> </File> <!--輸出到循環日誌,每次大小超過size,則這size大小的日誌會自動存入按年份-月份創建的文件夾下面並進行壓縮,做爲存檔 --> <RollingFile name="RollingFileLog" fileName="${logPath}/app.log" filePattern="${logPath}/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" /> <SizeBasedTriggeringPolicy size="50MB" /> </RollingFile> </Appenders> <!--而後定義logger,只有定義了logger並引入的appender,appender纔會生效 --> <Loggers> <!--創建一個默認的root的logger,記錄大於level高於TRACE的信息,若是這裏的level高於Appenders中的,則Appenders中也是以此等級爲起點,好比,這裏level="fatal",則Appenders中只出現fatal信息 --> <Root level="TRACE"> <!-- 輸出器,可選上面定義的任何項組合,或全選,作到可隨意定製 --> <AppenderRef ref="ConsoleLog" /> <!-- <AppenderRef ref="FileLog" /> --> <!-- <AppenderRef ref="RollingFileLog" /> --> </Root> </Loggers> </Configuration>
其中,在調試中能夠只使用Console,信息較多的話開啓File,正常使用過程只用RollingFileeclipse
三、在須要使用的類中添加ide
private static Logger logger = LogManager.getLogger(LogTest.class);
四、而後就可使用了,好比idea
public boolean hello() { logger.entry(); // trace級別的信息,單獨列出來是但願你在某個方法或者程序邏輯開始的時候調用,和logger.trace("entry")基本一個意思 logger.trace("我是trace信息"); logger.debug("我是debug信息"); logger.info("我是info信息"); // info級別的信息 logger.warn("我是warn信息"); logger.error("我是error信息"); // error級別的信息,參數就是你輸出的信息 logger.fatal("我是fatal信息"); logger.log(Level.DEBUG, "我是Level.DEBUG信息"); // 這個就是制定Level類型的調用:誰閒着沒事調用這個,也不必定哦! logger.exit(); // 和entry()對應的結束方法,和logger.trace("exit");一個意思 return false; }