内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

apache中Log4j和Log4j2的區(qū)別有哪些

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

員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團隊的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)建站堅持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因為“專注所以專業(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供成都做網(wǎng)站、網(wǎng)站建設(shè)、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),小程序開發(fā),軟件按需規(guī)劃網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。

1、配置文件類型 

log4j是通過一個.properties的文件作為主配置文件的,而現(xiàn)在的log4j 2則已經(jīng)棄用了這種方式,采用的是.xml,.json或者.jsn這種方式來做,可能這也是技術(shù)發(fā)展的一個必然性,畢竟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>

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

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目錄下就行了。大家記住一個細節(jié)點,是log4j2.xml,而不是log4j.xml,xml名字少個2都不行?。?/p>

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

4、Log調(diào)用 

log4j和log4j2調(diào)用都是很簡單的。 

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、配置文件方式 

最關(guān)鍵的最大的不同,那就是配置文件的區(qū)別了,大家具體使用的時候再根據(jù)你的情況進行配置就行了。 

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表示消息覆蓋指定的文件內(nèi)容,默認值是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>  

總結(jié): 

技術(shù)總是在不斷進步的,我們不能局限在已知的知識領(lǐng)域中,要不斷去創(chuàng)新,去嘗試!

附:

日志的級別:     

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

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

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

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

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

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

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

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

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

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

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

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

本文題目:apache中Log4j和Log4j2的區(qū)別有哪些
標(biāo)題路徑:http://www.rwnh.cn/article12/gopegc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣品牌網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、網(wǎng)站排名手機網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
蕲春县| 博湖县| 翁牛特旗| 息烽县| 葫芦岛市| 沈丘县| 浑源县| 连云港市| 柘荣县| 玉田县| 南丰县| 呼和浩特市| 阜宁县| 东兰县| 弥渡县| 龙泉市| 敦化市| 察隅县| 姚安县| 福清市| 四川省| 柏乡县| 霸州市| 子长县| 枞阳县| 孟州市| 五家渠市| 通河县| 三亚市| 阜城县| 新巴尔虎右旗| 六盘水市| 洪泽县| 奈曼旗| 汨罗市| 昆山市| 库尔勒市| 阿巴嘎旗| 垦利县| 新巴尔虎左旗| 博乐市|