您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何進行Log4j2的簡單使用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
日志是一個系統經常用到的功能,我們可以在調試的時候依靠日志查看輸出,在程序運行的時候通過查看日志判斷程序運行狀態。在Java世界中,有一個非常著名的日志類庫——Log4j。現在Log4j也有了新版本,就是Log4j2。新版本的好處我就不多說了。讓讓我們來開始使用吧。
要使用Log4j2,第一步就是先導入它的jar包。如果是普通項目的話,到log4j2官網下載jar包,然后將log4j-api-2.7.jar
和log4j-core-2.7.jar
添加到你項目的類路徑下。
如果使用Maven或者Gradle的話,到mvn倉庫查詢查找這兩個包,然后添加到項目依賴中。這樣就完成了準備工作。
然后打開項目,添加以下兩句,創建一個Logger并調試一些信息。注意這里的Logger和LogManager兩個類的全名分別是org.apache.logging.log4j.LogManager
和org.apache.logging.log4j.Logger
。不要和Java自帶的java.util.logging
下的日志類搞混了。
Logger logger = LogManager.getLogger(); logger.debug("5555555");
然后運行一下項目,就可以看到對應的輸出了。
如果你照著前面的做了,就會發現其實什么輸出都沒有,只有這么一句話:ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
。這是說因為沒找到配置文件,所以使用默認的日志級別,向控制臺只輸出錯誤信息。這就引出了一個日志級別的問題。
日志分為幾個級別,按照從輕往重如此排列:trace、debug、info、warn、error、fatal。相應的Logger類也有這么幾個對應方法,用于輸出相應的日志信息。如果我們定義了一個級別,那么低于這個級別的日志不會輸出。由于沒有配置文件,所以默認情況下的日志級別是error,正如前面的輸出那樣。這樣一來,低于error的日志就不會輸出。所以我們回到剛才,將debug方法改為error方法,再次運行項目。這次出現了日志輸出。
22:21:58.600 [Test worker] ERROR yitian.bean.BeanTest - 5555555
前面已經簡單演示了Log4j2的用法。下面就來說說Log4j2的配置文件。Log4j2既可以使用配置文件配置,也可以使用編程方式用代碼來配置。這里簡單說說配置文件方式。Log4j2支持多種配置文件,XML、JSON、YAML和perperties文件都支持,當然最常用的還是XML文件。將配置文件放在類路徑下即可,如果使用Maven或者Gradle的話,就是在resources文件夾下。
前面如果沒有配置文件的話,Log4j2就會使用一個默認配置,等效于下面的配置文件。
<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="Console"/> </Root> </Loggers></Configuration>
配置文件有兩個主要的地方,第一個是Appender節點,這個節點下會有很多Appender,也就是我們日志輸出的目的地,可以是控制臺也可以是某個文件,甚至是專用的遠程日志服務器。默認情況下只有一個控制臺。第二種重要的節點是Loggers節點,這個節點下可以有很多個Logger,每個Logger可以記錄不同的信息,Logger之間也可以共享某些配置。上面定義了一個Root Logger,如果沒有指定Logger 的名稱或者指定的Logger不存在,就會使用Root,而且Root Logger下的配置默認會被其他Logger繼承,除非它們定義了自己的配置。
然后我們再回頭看看Appenders節點,其中有這么一段:<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
。這里定義的就是日志的輸出格式。下面來簡單說說常用的輸出格式。
%d{HH:mm:ss.SSS} 輸出時間,精確度為毫秒。
%t 輸出當前線程的名稱。
%-5level 輸出日志級別,-5表示左對齊并且固定占5個字符寬度,如果不足用空格補齊。
%logger 輸出Logger名稱,如果是Root的話就沒有名稱。
%msg 日志信息,也就是我們傳入的信息。
%n 換行。
%F 輸出所在的文件名。
%L 輸出行號。
%M 輸出所在方法名。
%l 輸出語句所在的位置信息,包括文件名、類名、方法名、行號。
說了這么多,現在我們就可以開始自定義配置文件了。首先我們來添加一個新的Logger,來記錄所有信息,這個Logger的名稱就叫做TRACE_ALL吧。這個Logger有兩個屬性,level指定記錄級別,additivity指定傳遞性。假如傳遞性指定為true,如果我們現在使用TRACE_ALL記錄一個debug級別的日志,由于debug級別也符合Root的記錄范圍,這樣這個日志就會記錄兩遍。最后,我們用<AppenderRef ref="Console"/>
指定使用上面的控制臺Appender。
現在配置文件應該是這樣。
<?xml version="1.0" encoding="UTF-8"?><Configuration status="INFO"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="Console"/> </Root> <Logger name="TRACE_ALL" level="trace" additivity="false"> <AppenderRef ref="Console"/> </Logger> </Loggers></Configuration>
程序代碼是這樣的。在調用getLogger的時候指定要使用哪一個Logger。
Logger logger = LogManager.getLogger("TRACE_ALL"); logger.info("5555555");
除了使用Console作為日志輸出目的地之外,我們還可以定義其他的輸出,比如文件。下面我們來新建一個文件Appender。在Appenders節點下新建一個File節點,name和fileName屬性分別指定Appender名稱和目的文件名。然后我們指定TRACE_ALL Logger同時將日志輸出到控制臺和文件。
<?xml version="1.0" encoding="UTF-8"?><Configuration status="INFO"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> <File name="File" fileName="D:\Desktop\mylog.txt"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </File> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="Console"/> </Root> <Logger name="TRACE_ALL" level="trace" additivity="true"> <AppenderRef ref="File"/> <AppenderRef ref="Console"/> </Logger> </Loggers></Configuration>
再次運行程序,我們就會發現這次在對應的路徑下多出一個文件,這個文件的內容就是我們的輸出。
上述內容就是如何進行Log4j2的簡單使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。