1. 程式人生 > >如何通過配置log4j.xml來列印指定類或指定級別的日誌資訊

如何通過配置log4j.xml來列印指定類或指定級別的日誌資訊

把指定類的日誌資訊輸出到指定appender裡:
============================================================
<!--appender中,Theshold和Filter都是可選。不過,建議這種目的下最好不要寫,這樣,什麼資訊會輸出到該appender中,就只由指定logger的appender-ref的值來決定。否則會受到Theshold和Filter值的影響)。-->
<appender name="appender-3" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="file" value="${loggingRoot}/file.log"/>
    <param name="append" value="true"/>
    <param name="encoding" value="GBK"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%p [%d{HH:mm:ss}] %c{1}.%M(%L) - %m%n"/>
    </layout>
    </appender>
<logger name="com.a.b.c.d.e" additivity="false">
    <!--指定類的日誌級別,會影響指定類日誌發出資訊的成功與否-->
    <level value = "debug" />
    <appender-ref ref="appender-3" />
</logger>
同樣,在root元素裡不要指定該appender,如下:
<root>
    <level value="warn"/>
    <appender-ref ref="appender-1"/>
    <appender-ref ref="appender-2"/>
</root>
這樣的話,就杜絕了被其他logger繼承的可能性。
此例中,如果在root裡指定了該appender,則級別不低於warn的日誌資訊都會輸出到appender-3中。



把各個級別的日誌資訊輸出到各個的appender裡,可使用過濾器,下面以info級別為例:
============================================================
<appender name="appender-info" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="file" value="${loggingRoot}/info.log"/>
    <param name="append" value="true"/>
    <param name="encoding" value="GBK"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%p [%d{HH:mm:ss}] %c{1}.%M(%L) - %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
           <param name="LevelMin" value="INFO" />
           <param name="LevelMax" value="INFO" />
      </filter>
</appender>
appender-info只接受資訊級別為info的日誌資訊。



再說說關於root的一些情況:
============================================================
root元素定義的一些資訊只供作預設情況和繼承用。
只要後面的logger或appender,稍作顯式宣告,這些資訊都會被覆蓋。
以下面為例:
<root>
    <level value="warn"/>
    <appender-ref ref="appender-1"/>
    <appender-ref ref="appender-2"/>
</root>
預設情況是:
1. 輸出器appender-1和appender-2只接受不低於warn級別的日誌資訊,不過一旦指定了Theshold或Filter,就以指定的為準。
2. 日誌記錄器logger的輸出器appender,預設會輸出到appender-1和appender-2中,若指定了<appender-ref value="appender-3" />,則日誌資訊會輸出到這三個,要停止這種繼承關係,可新增additivity=false。


log4j簡明手冊中的要點。
 
.1 Named Hierarchy
如果一個logger 的名字後面跟著一個點號(dot),它就是點號(dot)後面的那個logger的前輩( ancestor),是這個晚輩(descendant) 的字首。如果在它自己和這個晚輩之間沒有其它的前輩,它和這個晚輩之間就是父子關係。

.2 Level Inheritance
對於一個給定的logger C,它繼承的級別等於logger階層裡,從C開始往root logger上去的第一個non-null級別。

.3 Basic Selection Rule
在一個級別為q(被指定的或繼承的)的logger裡,一個級別為p的日誌請求,只有在p >= q 時才能夠被執行。

.4 Appender Additivity
Logger C的log輸出資訊將被輸出到C的所有appenders和它的前輩的 appenders。這就是"appender additivity"的意思。
但是,如果logger C的前輩,比如說P,P的additivity flag被設定為 false,那麼,C的輸出資訊將被輸出到C的所有appenders中去,以及它的前輩的——截 止在P那裡,包括P在內的,appenders中去,但是不會輸出到P的前輩的 appenders中去。

預設情況下,Loggers的additivity flag設定為true。

log4j簡明手冊:http://log4j.jaxmao.org/log4j/docs/manual.html

初次實施log4j,做了些小總結,期待交流哈。

相關推薦

如何通過配置log4j.xml列印指定指定級別日誌資訊

把指定類的日誌資訊輸出到指定appender裡: ============================================================ <!--appender中,Theshold和Filter都是可選。不過,建議這種目的下最好不要寫,這樣,什麼資訊會輸出到該app

springboot添加log4j日誌配置log4j.xml生成日誌文件

ota urn version xmlns private 1.0 owa ram .json 第一步:添加pom文件依賴 <!-- log4j --> <dependency> <

背水一戰 Windows 10 (122) - 其它: 通過 Windows.System.Profile 命名空間下的獲取信息, 查找指定接口的所在程序集的所有子和子接口

enter 轉換 local frame long windows 添加 roo schema [源碼下載] 背水一戰 Windows 10 (122) - 其它: 通過 Windows.System.Profile 命名空間下的類獲取信息, 查找指定類或接口的所在程序集

轉】Eclipse編輯Spring配置檔案xml時自動提示class包名

轉自  http://bigdragon.iteye.com/blog/2396081   第一步,先檢視下自己的Eclipse是什麼版本,步驟如下: 1.1 點選Eclipse選單‘Help  -> About Eclipse’,

Lunix下tomcat通過配置server.xml配置檔案實現執行非webapps目錄下的專案

1、首先普及一個觀點:tomcat對於webapps下的專案會自動部署,不需要配置server.xml,但對於非webapps目錄下的專案則需要手動配置server.xml檔案,例如在搭建nginx伺服器均衡負載時,往往不會把專案放在webapps目錄下。 2、serv

SpringBoot通過配置檔案傳輸值到實體

1.建立一個配置檔案(appication.properties)項配置檔案加入以下: upload.target=D:/data/repository/upload/ upload.target.folder.1=yyyy upload.target.fold

通過conf/server.xml中的context配置的web專案啟動的時候沒有釋出情況日誌資訊

WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:21.11' did not find a matching pr

不需要配置log4j , 除錯列印ibatis執行的sql語句和引數

背景:如果不想通過配置log4j的方式來列印ibatis執行的sql語句和引數param,可以使用如下方法在控制檯列印sql語句和引數   public static void main(String[] args) { try { //宣告配置檔

在專案的classPath 下配置log4j.xml ,為什麼沒有讀取log4j配置檔案它會自己找到

因為在我們引的jar包  log4j-1.2.16.jar裡面,在啟動時又一個類會自動去找預設的配置檔案, 這些是在LogManage.java裡面的。預設會去classPath下查詢log4j的配

Eclipse編輯Spring配置檔案xml時自動提示class包名

以Spring2.0為例: 下載地址: Csdn: http://download.csdn.net/download/hh775313602/9812757 沒積分的可以去百度網盤下載,我已共享: http://pan.baidu.com/s/1nv9bb1f

Android-通過網路獲取xml檔案使用pull解析得到伺服器中的資訊(新聞客戶端)

通過網路獲取xml檔案,使用pull解析該檔案得到伺服器中的資訊; demo中使用了一個開源的圖片載入包,故上傳原始碼方便檢視; 效果圖: 步驟: 1.連線伺服器獲取xml檔案; 2.使用pull解析xml檔案存入實體物件中; 3.解析後將實體物件存入List集合中;

log4輸出指定的log級別

轉自:http://blog.csdn.net/finelife/archive/2007/05/17/1613282.aspx log4j:單獨指定某個Logger的輸出級別- - 一般對於生產系統,日誌級別調整為INFO以避免過多的輸出日誌。 但某些時候,需要跟蹤具體

log4j自定義級別並將新級別日誌資訊輸出到指定帶日期格式的log檔案

log4j.xml的配置如下: <appender name="LOG.EMAIL" class="org.apache.log4j.RollingFileAppender">   <param name="File" value="${catalina.home}/logs/EMAIL_L

cmd執行Java命令時編譯通過,但是找不到主無法載入主

剛剛開始學習Java時,發現一個重大問題,CMD執行javac命令能編譯,但是隻要執行java命令就顯示無法載入主類,但是eclipse正常執行,困擾了我很久,後來發現問題所在,是一個很奇葩的問題,給大家分享一下: 就是在用java命令時不要加.class字尾名!!!

tomcat中多個專案(web專案)共用log4j.jar的情況下,如何讓其各自列印各自的日誌檔案。及輸出同級別日誌資訊

問題描述: 1.專案A中有一個log4j.properties(配置為把日誌輸出到以專案名稱命名的資料夾中)  2.為了減輕tomcat負擔,把專案A的WEB-INF/lib下的所有jar檔案拷貝到tomcat下的lib中並修改catalina.properties對其載入

Eclipse通過HibernateTools實現逆向生成Hibernate實體對映

做專案必然要先進行資料庫表設計,然後根據資料庫設計建立實體類(VO),這是理所當然的,但是到公司裡做專案後,讓我認識到,沒有說既進行完資料庫設計後還要再“自己”建立一變VO。意思是,在專案設計時,要麼根據需求分析建立實體類,由正向生成資料庫表;要麼就先進行資料庫表設計,再逆向

log4j通過配置文件配置即,即可完成系統報錯想向指定郵箱發送提醒消息,網上的很多方法都又問題

name 分享 tor round 郵箱 article eap configure sys 我參考了下面的鏈接去實現,但是遇到了一些問題 參考鏈接: 1)http://blog.csdn.net/azheng270/article/details/2173430/ 這個鏈

java web客戶端整合cas,web.xml通過編碼的方式載入配置

前言: 專案整合cas單點登入,需要在web.xml里加上cas-client的過濾器配置,但是配置地址太繁瑣,而且有重複配置,能不能讓web.xml去讀properties檔案,只做一次配置。在porperties裡配置cas單點開關引數,開就載入cas配置,整合cas,關就不整合。

Log4j詳細配置(包括指定名,不打console等設定)

例子如下: log4j.rootLogger=INFO, Console ....... #log4j for QUEUE log4j.logger.Q=INFO,queue log4j.additivity.Q=false log4j.appender.queue

log4j指定打到單獨的日誌檔案的配置

    根據日誌定位問題的時候,如果所有的日誌都打到一個日誌檔案裡,查問題就很不直觀了。    一、指定某個路徑的包或類打到單獨的日誌檔案    log4j.xml 配置如下: <appender