




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Log4J使用完全手冊Log4J是Apache的一個開放源代碼項目(),它是一個日志操作包。通過使用Log4J,可以指定日志信息輸出的目的地,控制每一條日志的輸出格式,定義日志信息的級別。所有這些功能通過一個配置文件靈活進(jìn)行配置。一、LOG4J組成 LOG4J主要由三大組件組成: . Logger: 決定什么日志信息應(yīng)該被輸出、什么日志信息應(yīng)該被忽略; . Appender: 指定日志信息應(yīng)該輸出到什么地方, 這些地方可以是控制臺、文件、網(wǎng)絡(luò)設(shè)備; .
2、 Layout: 指定日志信息的輸出格式; 一個Logger可以有多個Appender,也就是說日志信息可以同時輸出到多個設(shè)備上,每個Appender對應(yīng) 一種Layout(示例見下圖)。 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組件,示例: 以上代碼定義了一個Logger組件,名稱為myLogger,日志級別為WARN。 3. 日志級別種類:
10、160; 一共有五種,級別由高到低依次是:fatal、error、warn、info、debug。獲得Logger實例后,我們可調(diào)用以下方法之一輸出日志信息: public void debug(Object message); /輸出debug級別的日志信息; public void info(Object
11、message); /輸出info級別的日志信息; public void warn(Object message); /輸出warn級別的日志信息; public void error(Object message
12、); /輸出error級別的日志信息; public void fatal(Object message); /輸出fatal級別的日志信息; public void log(Priority p, Object message);/輸出參
13、數(shù)Priority指定級別的日志信息; 以上方法只有當(dāng)它的級別大于或等于Logger組件配置的日志級別時才調(diào)用。以前面我們配置的myLogger為例,它的日志級別為WARN, 那么在程序中,它的warn()、error()、fatal()方法會被執(zhí)行。對于log()方法,只有當(dāng)它的參數(shù)Priority指定的日志級別大于或等于WARN時,它才會被執(zhí)行。 4. 為什么需要對日志進(jìn)行分級?
14、; 在寫程序的時候,為了調(diào)試程序,我們會在很多出錯的地方輸出大量的日志信息。當(dāng)程序調(diào)試完,不需要這些信息時,將程序中這些輸出日志信息代碼刪除嗎?這樣費時費力,對于大型程序幾乎不可行。通過對日志分級,假如不想輸出WARN級別的日志信息,則Logger組件的級別調(diào)高即可,省時省心。 5. Logger組件的繼承性 Log4J提供了一個root Logger,它是所有Logger組件的“祖先”,它永遠(yuǎn)存在,且不能通過名字檢索或引用,通過Logger.getRootLogger()方
15、法取得它。配置root Logger代碼: log4j.rootLogger=INFO,console 可在配置文件中方便地配置存在繼承關(guān)系的Logger組件,凡是在符號“.”后面的組件都會成為在符號“.”前面的Logger組件的子類。例如: 以上代碼中, mySonLogger是myLogger的子類Logger組件。Logger組件的繼承關(guān)系:
16、; . 如果子類Logger組件沒有定義日志級別,則將繼承父類的日志級別; . 如果子類Logger組件定義了日志級別,就不會繼承父類的日志級別; . 黙認(rèn)情況下,子類Logger組件會繼承父類所有的Appender,把它們加入到自己的Appener; . 如果把子類Logger組件的additivity標(biāo)志設(shè)為false,那么它就不會繼承父類A
17、ppender。additivity標(biāo)志 默認(rèn)值為false; 以上配置的三個Logger繼承關(guān)系示例如圖: root Logger: 日志級別=INFO appender清單=console &
18、#160; myLogger: 日志級別=WARN appender清單=null
19、 mySonLogger: 日志級別=null appender清單=file 這三個Logger組件實際日志級別和Appender如下表: Logger組件 日志級別
20、; Appender清單 root Logger INFO console myLogger
21、160; WARN console(繼承) mySonLogger WARN(繼承) file,console(繼承) &
22、#160; 三、Appender組件 Appender組件決定將日志信息輸出到什么地方。支持以下目的地: . 控制臺(Console); . 文件(File); . GUI組件(GUI component); . 套接口服務(wù)器(Remote socket server); . NT的事件記錄器(NT Event Logger);
23、0; . UNIX Syslog守護(hù)進(jìn)程(Remote UNIX Syslog daemon); 一個Logger可同時對應(yīng)多個Appender,示例:myLogger配置二個Appender: 一個file, 一個是console:四、Layout組件 為名稱為console的Appender配置SimpleLayout,代碼如下: 輸出日志格式如下: WARN - This is a log message from the myLog
24、ger 為名稱為file的Appender配置PatternLayout,代碼如下: 輸出日志格式如下: THREAD-1 WARN - This is a log message from the myLogger PatternLayout讓開發(fā)者依照ConversionPattern定義輸出格式。ConversionPattern中一些指定日志內(nèi)容和格式的預(yù)定義符號說明如下:
25、 符號 描述 %r 自程序開始后消耗的毫秒數(shù) %t 表示日志記錄請求生成的線程 %p
26、 表示日專語句的優(yōu)先級 %r 與日志請求相關(guān)的類別名稱 %c 日志信息所在的類名 %m%n 表示
27、日志信息的內(nèi)容五、Log4J的基本用法 1. 定義配置文件 Log4J支持二種配置文件格式:XML和Java屬性文件(采用“鍵=值”形式)。以下為Java屬性文件 格式配置文件: . 配置Logger組件
28、 其中:priority為日志級別,可選值包括FATAL、ERROR、WARN、INFO、DEBUG、ALL; appenderName指定Appender組件,可指定多個;
29、60; . 配置Appender組件 Log4J提供的Appender有以下幾種: . 配置Layout組件 下面為一配置文件示例,文件名為perties: # LOGGERS #
30、60; # APPENDERS # 2. 程序中使用Log4j . 獲得日志記錄器: . 讀取日志記錄器,配置Log4J環(huán)境; . 輸出日志信息;
31、; 在程序代碼中需要生成日志的地方,調(diào)用Logger的各種輸出日志方法輸出不同級別的日志,例如: myLogger.debug("Thie is a log message from the " + myLogger.getName();
32、60; 下面為一使用Log4J的程序,程序名為Test.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; 程序運行結(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中語句 改為 再次運行程序,結(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的日志在控制臺上輸出了二次,這是因為mySonLogger繼承了父類console Appender, 本身又定義了一個console Appender, 因而
49、有二個console Appender。六、在web應(yīng)用中使用Log4J 創(chuàng)建一個Servlet,在它初始化方法中讀取Log4J配置文件并配置Log4J環(huán)境,這個Servlet在Web應(yīng)用啟 動時候被加載和初始化,然后就可在其它Web組件中獲取Logger對象并輸出日志。 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ā)布運行使用Log4J的web應(yīng)用 1) 將Log4J的JAR文件拷貝至目錄:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國樓宇工程市場競爭態(tài)勢及行業(yè)投資潛力預(yù)測報告
- 玻璃調(diào)棒行業(yè)深度研究分析報告(2024-2030版)
- 中國高密度聚乙烯薄膜行業(yè)調(diào)查報告
- 2025年中國不銹鋼油灰槽行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025年中國厚邊帶軸承合頁行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 中國月嫂市場深度調(diào)查評估及投資方向研究報告
- 冷鏈物流合同
- 擔(dān)保合同模版
- 中國城投公司市場深度評估及行業(yè)投資前景咨詢報告
- 中國家居生活館行業(yè)市場調(diào)查研究及投資戰(zhàn)略咨詢報告
- 三生事業(yè)六大價值
- 鋯石基本特征及地質(zhì)應(yīng)用
- 絲網(wǎng)除沫器小計算
- 制缽機(jī)的設(shè)計(機(jī)械CAD圖紙)
- 學(xué)校財務(wù)管理制度
- 三年級下冊美術(shù)課件-第15課色彩拼貼畫|湘美版(共11張PPT)
- 水稻病蟲統(tǒng)防統(tǒng)治工作總結(jié)
- 水在不同溫度下的折射率、粘度和介電常數(shù)
- howdoyoucometoschoolPPT課件
- 四柱特高弟子班絕密資料——席學(xué)易
- 廣安市教育局文件材料歸檔范圍及保管期限表
評論
0/150
提交評論