中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

apache中Log4j和Log4j2的區別有哪些

發布時間:2021-12-16 17:43:02 來源:億速云 閱讀:238 作者:小新 欄目:大數據

這篇文章將為大家詳細講解有關apache中Log4j和Log4j2的區別有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1、配置文件類型 

log4j是通過一個.properties的文件作為主配置文件的,而現在的log4j 2則已經棄用了這種方式,采用的是.xml,.json或者.jsn這種方式來做,可能這也是技術發展的一個必然性,畢竟properties文件的可閱讀性真的是有點差。

2、核心JAR包 

log4j只需要引入一個jar包即可,

<dependency>

    <groupId>log4j</groupId>

    <artifactId>log4j</artifactId>

    <version>1.2.17</version>

</dependency>

而log4j 2則是需要2個核心

<dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-core</artifactId>

    <version>2.5</version>

</dependency>

<dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-api</artifactId>

    <version>2.5</version>

</dependency>

大家發現沒,log4j和log4j 2的包路徑是不同的,Apache為了區分,包路徑都更新了,這樣大家甚至可以在一個項目中使用2個版本的日志輸出哦!(不過我想你們沒有那么調皮吧,嘿嘿)

3、文件渲染 

log4j想要生效,我們需要在web.xml中進行配置,

 <listener>

    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>

  </listener> <context-param>

    <param-name>log4jConfigLocation</param-name>

    <param-value>classpath:config/log4j.properties</param-value>

  </context-param>

  <context-param>

    <param-name>log4jRefreshInterval</param-name>

    <param-value>60000</param-value>

這段配置目的在于告訴工程去哪加載log4j的配置文件和定義一個掃描器,這樣可以隨心所欲的放置log4j配置文件。 

log4j2就比較簡單,以maven工程為例,我們只需要把log4j2.xml放到工程resource目錄下就行了。大家記住一個細節點,是log4j2.xml,而不是log4j.xml,xml名字少個2都不行!!

喜歡做學問的小伙伴,有興趣可以去研究下,照我估計應該是在log4j2的包里面配置死了,而且大家可以嘗試下怎么自定義log4j2.xml的位置。

4、Log調用 

log4j和log4j2調用都是很簡單的。 

log4j:

import org.apache.log4j.Logger;

private final Logger LOGGER = Logger.getLogger(Test.class.getName());

log4j2:

import org.apache.logging.log4j.Level;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

private static Logger logger = LogManager.getLogger(Test.class.getName());

5、配置文件方式 

最關鍵的最大的不同,那就是配置文件的區別了,大家具體使用的時候再根據你的情況進行配置就行了。 

log4j2 例子如下:

<?xml version="1.0" encoding="UTF-8"?>    

<configuration status="error">  

<!--     先定義所有的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>  

<!--         文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,這個也挺有用的,適合臨時測試用 -->  

<!--         append為TRUE表示消息增加到指定文件中,false表示消息覆蓋指定的文件內容,默認值是true -->  

        <File name="log" fileName="log/test.log" append="false">  

            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>  

        </File>  

<!--          添加過濾器ThresholdFilter,可以有選擇的輸出某個級別以上的類別  onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否則直接拒絕  -->  

        <File name="ERROR" fileName="logs/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="RollingFile" fileName="logs/web.log"  

                     filePattern="logs/$${date:yyyy-MM}/web-%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="2MB"/>  

        </RollingFile>  

    </appenders>  

<!--     然后定義logger,只有定義了logger并引入的appender,appender才會生效 -->  

    <loggers>  

<!--         建立一個默認的root的logger -->  

        <root level="trace">  

            <appender-ref ref="RollingFile"/>  

            <appender-ref ref="Console"/>  

            <appender-ref ref="ERROR" />  

            <appender-ref ref="log"/>  

        </root>  

    </loggers>  

</configuration>  

總結: 

技術總是在不斷進步的,我們不能局限在已知的知識領域中,要不斷去創新,去嘗試!

附:

日志的級別:     

我們現在要調用logger的方法,不過在這個Logger對象中,有很多方法,所以要先了解log4j的日志級別,log4j規定了默認的幾個級別:trace<debug<info<warn<error<fatal等。這里要說明一下:    

級別之間是包含的關系,意思是如果你設置日志級別是trace,則大于等于這個級別的日志都會輸出。

基本上默認的級別沒多大區別,就是一個默認的設定。你可以通過它的API自己定義級別。你也可以隨意調用這些方法,不過你要在配置文件里面好好處理了,否則就起不到日志的作用了,而且也不易讀,相當于一個規范,你要完全定義一套也可以,不用沒多大必要。從我們實驗的結果可以看出,log4j默認的優先級為ERROR或者WARN(實際上是ERROR)    

這不同的級別的含義大家都很容易理解,這里就簡單介紹一下:

trace:  是追蹤,就是程序推進以下,你就可以寫個trace輸出,所以trace應該會特別多,不過沒關系,我們可以設置最低日志級別不讓他輸出。

debug:調試么,我一般就只用這個作為最低級別,trace壓根不用。是在沒辦法就用eclipse或者idea的debug功能就好了么。

info: 輸出一下你感興趣的或者重要的信息,這個用的最多了。

warn: 有些信息不是錯誤信息,但是也要給程序員的一些提示,類似于eclipse中代碼的驗證不是有error 

和warn(不算錯誤但是也請注意,比如以下depressed的方法)。

error: 錯誤信息。用的也比較多。

fatal:級別比較高了。重大錯誤,這種級別你可以直接停止程序了,是不應該出現的錯誤么!不用那么緊張,其實就是一個程度的問題。

關于“apache中Log4j和Log4j2的區別有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

峨眉山市| 宿州市| 宁乡县| 东至县| 遂宁市| 平安县| 金昌市| 道孚县| 方城县| 海城市| 翼城县| 宝鸡市| 金山区| 科技| 易门县| 东乡县| 长治市| 城口县| 兴化市| 綦江县| 尚志市| 冷水江市| 内江市| 曲麻莱县| 新昌县| 高州市| 阳山县| 高台县| 濮阳市| 苗栗市| 阿巴嘎旗| 哈尔滨市| 邯郸市| 隆化县| 社会| 宝兴县| 通山县| 灵宝市| 阳高县| 德格县| 开化县|