程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Log4J基本教程

Log4J基本教程

編輯:關於JAVA

在Log4J中存在幾個概念首先介紹一下,最最重要的兩個是Logger和Appender (請參考Log4J手冊),其實是繼承層次以及輸出控制。

首先Log4J中總是存在一個rootLogger,即使沒有顯示配置也是存在的,並且 默認輸出級別為DEBUG。

其它的logger都繼承自這個rootLogger(如果其他logger未單獨定義其輸出 級別)。

Log4J中的層次是用'.'來分隔的,如log4j.logger.com.example.test,這裡 並不是說log4j.logger後面一定是具體的包名乃至類名,

這個名稱可以自定義,我們甚至可以定義一個log4j.logger.A.B.C, 在 com.example.test中的類裡取名稱為A.B的logger,如

Logger logger = Logger.getLogger("A.B")

上例中我們建立了3個logger實例,它們分別是"A"、 "A.B"、"A.B.C"。每次我們在系統中取得logger時,並不 是新建實例,這些實例是

系統啟動的時候就按照配置文件初始化好的(也可能時第一次引用的時候建 立的,然後緩存其實例供以後使用,這部分還沒有時間研究)。

限制appender疊加性

例1:

log4j.rootLogger=DEBUG, Console

log4j.logger.A=DEBUG, Console

log4j.logger.A.B=INFO, Console

對於logger A.B輸出的任何日志會往控制台輸出三次,原因是A.B繼承A的以 及A的父logger的所有appender,

這種繼承關系僅僅是把父logger的appender添加到自己的appender列表中, 父logger的輸出level不會影響

子logger的輸出。

例2:限制appender疊加

log4j.rootLogger=DEBUG, Console

log4j.logger.A=DEBUG, Console

log4j.logger.A.B=INFO, Console

log4j.additivity.A.B=false

logger A.B的日志僅會輸出到自己Console中,不會繼承任何父logger的 appender。

控制appender的輸出級別

若想對輸出到appender中的日志級別進行限制的話,就需要用到threshold來 控制。

log4j.threshold=ERROR 用來控制所有的appender,即輸出到所有appender 的日志,

不管原來是什麼級別的,都不能低於threshold所規定的級別。

log4j.appender.Console.threshold=ERROR 用來控制指定的appender的輸出 級別。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved