溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行Log4j2的簡(jiǎn)單使用

發(fā)布時(shí)間:2021-11-10 18:50:59 來(lái)源:億速云 閱讀:133 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何進(jìn)行Log4j2的簡(jiǎn)單使用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

日志是一個(gè)系統(tǒng)經(jīng)常用到的功能,我們可以在調(diào)試的時(shí)候依靠日志查看輸出,在程序運(yùn)行的時(shí)候通過(guò)查看日志判斷程序運(yùn)行狀態(tài)。在Java世界中,有一個(gè)非常著名的日志類庫(kù)——Log4j?,F(xiàn)在Log4j也有了新版本,就是Log4j2。新版本的好處我就不多說(shuō)了。讓讓我們來(lái)開(kāi)始使用吧。

引入Log4j2

要使用Log4j2,第一步就是先導(dǎo)入它的jar包。如果是普通項(xiàng)目的話,到log4j2官網(wǎng)下載jar包,然后將log4j-api-2.7.jarlog4j-core-2.7.jar添加到你項(xiàng)目的類路徑下。

如果使用Maven或者Gradle的話,到mvn倉(cāng)庫(kù)查詢查找這兩個(gè)包,然后添加到項(xiàng)目依賴中。這樣就完成了準(zhǔn)備工作。

然后打開(kāi)項(xiàng)目,添加以下兩句,創(chuàng)建一個(gè)Logger并調(diào)試一些信息。注意這里的Logger和LogManager兩個(gè)類的全名分別是org.apache.logging.log4j.LogManagerorg.apache.logging.log4j.Logger。不要和Java自帶的java.util.logging下的日志類搞混了。

Logger logger = LogManager.getLogger();
logger.debug("5555555");

然后運(yùn)行一下項(xiàng)目,就可以看到對(duì)應(yīng)的輸出了。

日志級(jí)別

如果你照著前面的做了,就會(huì)發(fā)現(xiàn)其實(shí)什么輸出都沒(méi)有,只有這么一句話:ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.。這是說(shuō)因?yàn)闆](méi)找到配置文件,所以使用默認(rèn)的日志級(jí)別,向控制臺(tái)只輸出錯(cuò)誤信息。這就引出了一個(gè)日志級(jí)別的問(wèn)題。

日志分為幾個(gè)級(jí)別,按照從輕往重如此排列:trace、debug、info、warn、error、fatal。相應(yīng)的Logger類也有這么幾個(gè)對(duì)應(yīng)方法,用于輸出相應(yīng)的日志信息。如果我們定義了一個(gè)級(jí)別,那么低于這個(gè)級(jí)別的日志不會(huì)輸出。由于沒(méi)有配置文件,所以默認(rèn)情況下的日志級(jí)別是error,正如前面的輸出那樣。這樣一來(lái),低于error的日志就不會(huì)輸出。所以我們回到剛才,將debug方法改為error方法,再次運(yùn)行項(xiàng)目。這次出現(xiàn)了日志輸出。

22:21:58.600 [Test worker] ERROR yitian.bean.BeanTest - 5555555

配置文件

前面已經(jīng)簡(jiǎn)單演示了Log4j2的用法。下面就來(lái)說(shuō)說(shuō)Log4j2的配置文件。Log4j2既可以使用配置文件配置,也可以使用編程方式用代碼來(lái)配置。這里簡(jiǎn)單說(shuō)說(shuō)配置文件方式。Log4j2支持多種配置文件,XML、JSON、YAML和perperties文件都支持,當(dāng)然最常用的還是XML文件。將配置文件放在類路徑下即可,如果使用Maven或者Gradle的話,就是在resources文件夾下。

前面如果沒(méi)有配置文件的話,Log4j2就會(huì)使用一個(gè)默認(rèn)配置,等效于下面的配置文件。

<?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>

配置文件有兩個(gè)主要的地方,第一個(gè)是Appender節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)下會(huì)有很多Appender,也就是我們?nèi)罩据敵龅哪康牡兀梢允强刂婆_(tái)也可以是某個(gè)文件,甚至是專用的遠(yuǎn)程日志服務(wù)器。默認(rèn)情況下只有一個(gè)控制臺(tái)。第二種重要的節(jié)點(diǎn)是Loggers節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)下可以有很多個(gè)Logger,每個(gè)Logger可以記錄不同的信息,Logger之間也可以共享某些配置。上面定義了一個(gè)Root Logger,如果沒(méi)有指定Logger 的名稱或者指定的Logger不存在,就會(huì)使用Root,而且Root Logger下的配置默認(rèn)會(huì)被其他Logger繼承,除非它們定義了自己的配置。

然后我們?cè)倩仡^看看Appenders節(jié)點(diǎn),其中有這么一段:<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>。這里定義的就是日志的輸出格式。下面來(lái)簡(jiǎn)單說(shuō)說(shuō)常用的輸出格式。

  • %d{HH:mm:ss.SSS} 輸出時(shí)間,精確度為毫秒。

  • %t 輸出當(dāng)前線程的名稱。

  • %-5level 輸出日志級(jí)別,-5表示左對(duì)齊并且固定占5個(gè)字符寬度,如果不足用空格補(bǔ)齊。

  • %logger 輸出Logger名稱,如果是Root的話就沒(méi)有名稱。

  • %msg 日志信息,也就是我們傳入的信息。

  • %n 換行。

  • %F 輸出所在的文件名。

  • %L 輸出行號(hào)。

  • %M 輸出所在方法名。

  • %l  輸出語(yǔ)句所在的位置信息,包括文件名、類名、方法名、行號(hào)。

自定義配置

自定義Logger

說(shuō)了這么多,現(xiàn)在我們就可以開(kāi)始自定義配置文件了。首先我們來(lái)添加一個(gè)新的Logger,來(lái)記錄所有信息,這個(gè)Logger的名稱就叫做TRACE_ALL吧。這個(gè)Logger有兩個(gè)屬性,level指定記錄級(jí)別,additivity指定傳遞性。假如傳遞性指定為true,如果我們現(xiàn)在使用TRACE_ALL記錄一個(gè)debug級(jí)別的日志,由于debug級(jí)別也符合Root的記錄范圍,這樣這個(gè)日志就會(huì)記錄兩遍。最后,我們用<AppenderRef ref="Console"/>指定使用上面的控制臺(tái)Appender。

現(xiàn)在配置文件應(yīng)該是這樣。

<?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>

程序代碼是這樣的。在調(diào)用getLogger的時(shí)候指定要使用哪一個(gè)Logger。

Logger logger = LogManager.getLogger("TRACE_ALL");
logger.info("5555555");

自定義Appender

除了使用Console作為日志輸出目的地之外,我們還可以定義其他的輸出,比如文件。下面我們來(lái)新建一個(gè)文件Appender。在Appenders節(jié)點(diǎn)下新建一個(gè)File節(jié)點(diǎn),name和fileName屬性分別指定Appender名稱和目的文件名。然后我們指定TRACE_ALL Logger同時(shí)將日志輸出到控制臺(tái)和文件。

<?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>

再次運(yùn)行程序,我們就會(huì)發(fā)現(xiàn)這次在對(duì)應(yīng)的路徑下多出一個(gè)文件,這個(gè)文件的內(nèi)容就是我們的輸出。

上述內(nèi)容就是如何進(jìn)行Log4j2的簡(jiǎn)單使用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI