Logj使用完全手冊(cè)_第1頁(yè)
Logj使用完全手冊(cè)_第2頁(yè)
Logj使用完全手冊(cè)_第3頁(yè)
Logj使用完全手冊(cè)_第4頁(yè)
Logj使用完全手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Log4J使用完全手冊(cè)Log4J是Apache的一個(gè)開(kāi)放源代碼項(xiàng)目(),它是一個(gè)日志操作包。通過(guò)使用Log4J,可以指定日志信息輸出的目的地,控制每一條日志的輸出格式,定義日志信息的級(jí)別。所有這些功能通過(guò)一個(gè)配置文件靈活進(jìn)行配置。一、LOG4J組成    LOG4J主要由三大組件組成:    . Logger: 決定什么日志信息應(yīng)該被輸出、什么日志信息應(yīng)該被忽略;    . Appender: 指定日志信息應(yīng)該輸出到什么地方, 這些地方可以是控制臺(tái)、文件、網(wǎng)絡(luò)設(shè)備;    .

2、 Layout: 指定日志信息的輸出格式;    一個(gè)Logger可以有多個(gè)Appender,也就是說(shuō)日志信息可以同時(shí)輸出到多個(gè)設(shè)備上,每個(gè)Appender對(duì)應(yīng)    一種Layout(示例見(jiàn)下圖)。                Appender1    Layout          

3、    Logger                      Appender2    Layout二、Logger組件    1. Logger組件提供的方法: java 代碼1. package2.   3. public class Logger   

4、 4.   5.            / Creation & retrieval methods:   6.            public static Logger getRootLogger();   7.

5、           public static Logger getLogger(String name);   8.   9.            / printing methods:   10.    

6、0;       public void debug(Object message);   11.            public void info(Object message);   12.           

7、; public void warn(Object message);   13.            public void error(Object message);   14.            public void fatal(Ob

8、ject message);   15.       16.            / generic printing method:   17.            public void log(Priority

9、 p, Object message);   18.       2. 在配置文件中配置Logger組件       可在Log4J配置文件中配置自己的Logger組件,示例:       以上代碼定義了一個(gè)Logger組件,名稱(chēng)為myLogger,日志級(jí)別為WARN。      3. 日志級(jí)別種類(lèi):  &#

10、160;    一共有五種,級(jí)別由高到低依次是:fatal、error、warn、info、debug。獲得Logger實(shí)例后,我們可調(diào)用以下方法之一輸出日志信息:       public void debug(Object message);          /輸出debug級(jí)別的日志信息;       public void info(Object

11、message);           /輸出info級(jí)別的日志信息;       public void warn(Object message);           /輸出warn級(jí)別的日志信息;       public void error(Object message

12、);          /輸出error級(jí)別的日志信息;       public void fatal(Object message);          /輸出fatal級(jí)別的日志信息;       public void log(Priority p, Object message);/輸出參

13、數(shù)Priority指定級(jí)別的日志信息;       以上方法只有當(dāng)它的級(jí)別大于或等于Logger組件配置的日志級(jí)別時(shí)才調(diào)用。以前面我們配置的myLogger為例,它的日志級(jí)別為WARN, 那么在程序中,它的warn()、error()、fatal()方法會(huì)被執(zhí)行。對(duì)于log()方法,只有當(dāng)它的參數(shù)Priority指定的日志級(jí)別大于或等于WARN時(shí),它才會(huì)被執(zhí)行。    4. 為什么需要對(duì)日志進(jìn)行分級(jí)?         

14、;  在寫(xiě)程序的時(shí)候,為了調(diào)試程序,我們會(huì)在很多出錯(cuò)的地方輸出大量的日志信息。當(dāng)程序調(diào)試完,不需要這些信息時(shí),將程序中這些輸出日志信息代碼刪除嗎?這樣費(fèi)時(shí)費(fèi)力,對(duì)于大型程序幾乎不可行。通過(guò)對(duì)日志分級(jí),假如不想輸出WARN級(jí)別的日志信息,則Logger組件的級(jí)別調(diào)高即可,省時(shí)省心。    5. Logger組件的繼承性       Log4J提供了一個(gè)root Logger,它是所有Logger組件的“祖先”,它永遠(yuǎn)存在,且不能通過(guò)名字檢索或引用,通過(guò)Logger.getRootLogger()方

15、法取得它。配置root Logger代碼:       log4j.rootLogger=INFO,console       可在配置文件中方便地配置存在繼承關(guān)系的Logger組件,凡是在符號(hào)“.”后面的組件都會(huì)成為在符號(hào)“.”前面的Logger組件的子類(lèi)。例如:       以上代碼中, mySonLogger是myLogger的子類(lèi)Logger組件。Logger組件的繼承關(guān)系:   

16、;    . 如果子類(lèi)Logger組件沒(méi)有定義日志級(jí)別,則將繼承父類(lèi)的日志級(jí)別;       . 如果子類(lèi)Logger組件定義了日志級(jí)別,就不會(huì)繼承父類(lèi)的日志級(jí)別;       . 黙認(rèn)情況下,子類(lèi)Logger組件會(huì)繼承父類(lèi)所有的Appender,把它們加入到自己的Appener;       . 如果把子類(lèi)Logger組件的additivity標(biāo)志設(shè)為false,那么它就不會(huì)繼承父類(lèi)A

17、ppender。additivity標(biāo)志 默認(rèn)值為false;       以上配置的三個(gè)Logger繼承關(guān)系示例如圖:            root Logger: 日志級(jí)別=INFO  appender清單=console               &

18、#160;                   myLogger: 日志級(jí)別=WARN appender清單=null                          

19、         mySonLogger: 日志級(jí)別=null appender清單=file       這三個(gè)Logger組件實(shí)際日志級(jí)別和Appender如下表:       Logger組件          日志級(jí)別        

20、;  Appender清單       root Logger         INFO              console       myLogger        &#

21、160;   WARN              console(繼承)       mySonLogger         WARN(繼承)        file,console(繼承)    &

22、#160;  三、Appender組件    Appender組件決定將日志信息輸出到什么地方。支持以下目的地:    . 控制臺(tái)(Console);    . 文件(File);    . GUI組件(GUI component);    . 套接口服務(wù)器(Remote socket server);    . NT的事件記錄器(NT Event Logger);  

23、0; . UNIX Syslog守護(hù)進(jìn)程(Remote UNIX Syslog daemon);    一個(gè)Logger可同時(shí)對(duì)應(yīng)多個(gè)Appender,示例:myLogger配置二個(gè)Appender: 一個(gè)file, 一個(gè)是console:四、Layout組件     為名稱(chēng)為console的Appender配置SimpleLayout,代碼如下:    輸出日志格式如下:    WARN - This is a log message from the myLog

24、ger        為名稱(chēng)為file的Appender配置PatternLayout,代碼如下:    輸出日志格式如下:    THREAD-1 WARN - This is a log message from the myLogger    PatternLayout讓開(kāi)發(fā)者依照ConversionPattern定義輸出格式。ConversionPattern中一些指定日志內(nèi)容和格式的預(yù)定義符號(hào)說(shuō)明如下:  

25、  符號(hào)         描述    %r           自程序開(kāi)始后消耗的毫秒數(shù)    %t           表示日志記錄請(qǐng)求生成的線(xiàn)程    %p     

26、      表示日專(zhuān)語(yǔ)句的優(yōu)先級(jí)    %r           與日志請(qǐng)求相關(guān)的類(lèi)別名稱(chēng)    %c           日志信息所在的類(lèi)名    %m%n         表示

27、日志信息的內(nèi)容五、Log4J的基本用法    1. 定義配置文件       Log4J支持二種配置文件格式:XML和Java屬性文件(采用“鍵=值”形式)。以下為Java屬性文件       格式配置文件:             . 配置Logger組件      

28、            其中:priority為日志級(jí)別,可選值包括FATAL、ERROR、WARN、INFO、DEBUG、ALL;               appenderName指定Appender組件,可指定多個(gè);          

29、60;    . 配置Appender組件         Log4J提供的Appender有以下幾種:       . 配置Layout組件         下面為一配置文件示例,文件名為perties:         # LOGGERS #

30、60;        # APPENDERS #             2. 程序中使用Log4j       . 獲得日志記錄器:       . 讀取日志記錄器,配置Log4J環(huán)境;       . 輸出日志信息; 

31、;        在程序代碼中需要生成日志的地方,調(diào)用Logger的各種輸出日志方法輸出不同級(jí)別的日志,例如:                  myLogger.debug("Thie is a log message from the " + myLogger.getName();    

32、60;    下面為一使用Log4J的程序,程序名為T(mén)est.java:java 代碼1.  import2.  import3.     4.  public class Test    5.   6.    public static void main(String args)    7.    

33、60; /Get an instance of the myLogger   8.      Logger myLogger = Logger.getLogger("myLogger");   9.       10.      /Get an instance

34、0;of the childLogger   11.      Logger mySonLogger = Logger.getLogger("myLogger.mySonLogger");   12.      /Load the proerties using the PropertyConfigurator 

35、60; 13.      PropertyConfigurator.configure("perties");   14.   15.      /Log Messages using the Parent Logger   16.      myLogger.debug(&quo

36、t;Thie is a log message from the " + myLogger.getName();   17.      myL("Thie is a log message from the " + myLogger.getName();   18.  

37、    myLogger.warn("Thie is a log message from the " +  myLogger.getName();   19.      myLogger.error("Thie is a log message from the " 

38、+ myLogger.getName();   20.      myLogger.fatal("Thie is a log message from the " + myLogger.getName();   21.   22.      mySonLogger.debug("Thie is

39、60;a log message from the " + mySonLogger.getName();   23.      mySonL("Thie is a log message from the " + mySonLogger.getName();   24.   &#

40、160;  mySonLogger.warn("Thie is a log message from the " +  mySonLogger.getName();   25.      mySonLogger.error("Thie is a log message from the " 

41、;+ mySonLogger.getName();   26.      mySonLogger.fatal("Thie is a log message from the " + mySonLogger.getName();   27.       28.       

42、0;   程序運(yùn)行結(jié)果為:        WARN - Thie is a log message from the myLogger        ERROR - Thie is a log message from the myLogger        FATAL - Thie is a log message from the myLogger &#

43、160;      WARN - Thie is a log message from the myLogger.mySonLogger        ERROR - Thie is a log message from the myLogger.mySonLogger        FATAL - Thie is a log message from the myLogger.mySonLogger

44、60;       WARN - Thie is a log message from the myLogger.mySonLogger        ERROR - Thie is a log message from the myLogger.mySonLogger        FATAL - Thie is a log message from the myLogger.mySonLogg

45、er        如將配置文件perties中語(yǔ)句 改為 再次運(yùn)行程序,結(jié)果如下:        WARN - Thie is a log message from the myLogger        ERROR - Thie is a log message from the myLogger    &

46、#160;   FATAL - Thie is a log message from the myLogger        WARN - Thie is a log message from the myLogger.mySonLogger        WARN - Thie is a log message from the myLogger.mySonLogger     

47、60;  ERROR - Thie is a log message from the myLogger.mySonLogger        ERROR - Thie is a log message from the myLogger.mySonLogger        FATAL - Thie is a log message from the myLogger.mySonLogger    

48、60;            FATAL - Thie is a log message from the myLogger.mySonLogger        mySonLogger的日志在控制臺(tái)上輸出了二次,這是因?yàn)閙ySonLogger繼承了父類(lèi)console Appender,        本身又定義了一個(gè)console Appender, 因而

49、有二個(gè)console Appender。六、在web應(yīng)用中使用Log4J    創(chuàng)建一個(gè)Servlet,在它初始化方法中讀取Log4J配置文件并配置Log4J環(huán)境,這個(gè)Servlet在Web應(yīng)用啟    動(dòng)時(shí)候被加載和初始化,然后就可在其它Web組件中獲取Logger對(duì)象并輸出日志。    1. 創(chuàng)建用于配置Log4J環(huán)境的Servletjava 代碼1. import2. import3. import4. import5.   6. import7.   8.

50、public class Log4JServlet extends HttpServlet    9.       public void init() throws ServletException    10.            String path =

51、60;getServletContext().getRealPath("/");   11.            /getInitParameter("propfile")方法從web.xml文件中讀取Log4J配置文件的名字"profile"。   12.           

52、; String propfile = path + getInitParameter("propfile");   13.            PropertyConfigurator.configure(propfile);   14.          15.  

53、0;16.         該Servlet在web.xml中的配置如下:xml 代碼1. <servlet>  2.   <servlet-name>log4jServlet</servlet-name>  3.   <servlet-class>Log4JServlet</servlet-class>  4.   <init-param&

54、gt;  5.     <param-name>propfile</param-name>  6.     <param-value>/WEB-INF/perties</param-value>  7.   </init-param>  8.   <load-on-startup>1</load-on-

55、startup>  9. </servlet>  2. 在login.jsp中輸出日志       <%page              mySonLogger.debug("Thie is a log message from the " + mySonLogger.getName();   

56、;          mySonL("Thie is a log message from the " + mySonLogger.getName();             mySonLogger.warn("Thie is a log message from the " +  mySonLogger.getNa

57、me();             mySonLogger.error("Thie is a log message from the " + mySonLogger.getName();             mySonLogger.fatal("Thie is a log message from the " +

58、 mySonLogger.getName();           %>           <br>             <form name="loginForm" method="post" action=

59、"dispatcher">             username: <input type="text" name="username">             <br>        

60、;     password: <input type="text" name="password">             <br>             <input type="submit" name="su

61、bmit" value="submit">           </form>         </body>       </html>                   3. 發(fā)布運(yùn)行使用Log4J的web應(yīng)用       1) 將Log4J的JAR文件拷貝至目錄:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論