




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1第10章 Log4j的應用學前提示本章將從什么是Log4j、Log4j的配置、Java程序中如何調用Log4j等方面來講解Log4j的使用。知識要點Log4j下載與配置Log4j的使用Log4j的性能調優commons-logging的使用210.1Log4j概述日志(Log)是指記錄程序運行時狀態信息的文本。在應用程序中進行日志記錄,主要有以下幾個目的:監視代碼中變量的變化情況,周期性地記錄到文件中,供其他應用進行統計和分析工作。將代碼運行時的軌跡作為日后審計的依據。擔當集成開發環境中的調試器的作用,向文件或控制臺打印代碼的調試信息。Log4j是Apache的一個開放源代碼項目,通過使用Log4j,可以控制日志信息輸送的目的地是控制臺、文件、GUI組件,甚至是套接口服務器、事件記錄器、UnixSyslog守護進程等;用戶也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,能夠更加細致地控制日志的生成過程。并且可以通過配置文件靈活地設置日志信息的優先級、日志信息的輸出目的地以及日志信息的輸出格式。310.1Log4j概述Log4j中有三個主要的組件,它們分別是Logger、Appender和Layout,即日志寫入器、日志輸出終端和日志布局模式。Log4j的類結構如圖10.1所示。410.1.1日志記錄器(Logger)org.apache.log4j.Logger類的實例是用來取代System.out或者System.err的日志寫出器的,主要用來輸出日志信息。可以通過以下方式來獲取Logger類的實例://根據指定名稱來獲取一個日志記錄器實例Loggerlogger=Logger.getLogger(Stringname);//根據指定的類信息中的類名獲取一個日志記錄實例Loggerlogger=Logger.getLogger(Classclazz);獲取Logger實例之后,就可以使用它提供的以下方法來記錄日志了:參見教材P343510.1.1日志記錄器(Logger)Log4j中定義了5種日志輸出優先級別,來靈活控制輸出的日志內容,按照優先級別由高到低排列,如表10.1所示。610.1.2日志輸出目的地(Appender)Appender的功能是把格式化好的日志信息輸出到指定的目的地中。執行日志輸出語句時,Logger對象將接收來自日志語句的記錄請求,然后發送至Appender,Appender將輸出結果寫入到用戶指定的目的地。日志目的地是通過Log4j的配置文件來指定的。對于不同的日志目的地,Log4j提供不同的Appender類型的實現類。常用的Appender實現類包括:用于控制臺的org.apache.log4j.ConsoleAppender。用于文件的org.apache.log4j.FileAppender。org.apache.log4j.RollingFileAppender——文件到達指定大小時產生一個新的文件。org.apache.log4j.DailyRollingFileAppender——每天產生一個日志文件。用于以流格式發送到任意位置的org.apache.log4j.WriterAppender。用于添加到數據庫的org.apache.log4j.jdbc.JDBCAppender。用于郵件發送的.SMTPAppender。710.1.3日志格式化器(Layout)Layout用來把日志消息按指定的格式格式化成字符串。而具體的格式是通過Log4j的配置文件來配置的。Log4j中提供用來格式化輸出結果的各種布局實現類。org.apache.log4j.SimpleLayoutorg.apache.log4j.PatternLayoutorg.apache.log4j.TTCCLayoutorg.apache.log4j.HTMLLayoutorg.apache.log4j.xml.XMLLayout810.2Log4j的下載與環境搭建Log4j的下載地址是/dist/logging/log4j/,下載頁面如圖10.2所示。解壓此文件,打開解壓后的文件夾,如圖10.3所示。將dis\lib目錄下的log4j-1.2.9.jar放置到項目的classpath中,對于Web項目,則需要將其放置于項目的WEB-INF\lib目錄下,便完成了Log4j的配置。910.3Log4j的使用Log4j受眾多、用戶青睞的原因之一,是因為它可以使用配置文件,使應用程序能更加靈活地配置log日志輸出方式,包括輸出優先級、輸出目的地、輸出格式。所以本節首先介紹Log4j的配置文件,其次介紹它的使用技巧。1010.3.1Log4j的配置文件1.perties(1) 配置根日志記錄器(2) 配置日志信息輸出目的地Appender。(3) 配置日志信息的格式(布局)(4) 配置打印格式。(5) 其他設置。2.log4j.xml1110.3.2Log4j的使用當配置文件編寫配置好之后,就可以使用Log4j的API進行日志記錄了。它的使用也比較簡單,在講解之前,先打開docs\api目錄下的index.html,這是Log4j的幫助文檔,它有助于本小節的學習。幫助文檔的首頁如圖10.5所示。1210.3.2Log4j的使用在Java代碼中使用Log4j打印日志信息的具體步驟如下。(1) 獲取記錄器(2) 讀取配置文件(3) 插入記錄信息(格式化日志信息)下面通過用一個簡單的實例程序來進一步說明Log4j的使用方法。新建名為LogTest.java的文件,程序代碼如下:參見教材P350LogTest.java文件中所使用perties文件的代碼清單如下:參見教材P3501310.4Log4j實例應用本例是在第8章中jstlinstance示例的基礎上完成的,如果前面的示例沒有完成,建議先完成第8章的程序。然后按照以下步驟進行修改。(1) 新建perties文件。(2) 修改StuServlet.java文件(3) 修改StuBeanDaoImpl.java文件(4) 部署程序,啟動Tomcat服務,訪問程序。1410.5Log4j的性能調優Log4j作為日志記錄工具,它最終還是要在程序代碼中添加信息輸出語句。所以,對應用程序運行的性能肯定會有一些影響,具體影響因素如下:日志輸出的目的地。日志的輸出格式。日志的輸出級別。1510.6使用commons-logging10.6.1commons-logging概述commons-logging是Apache組織下的一個開源日志項目。commons-logging在運行時能夠幫我們自動選擇適當的日志實現系統,這一點非常人性化。而且它甚至可以不需要配置就能自動選擇適當的日志實現系統。1610.6.1commons-logging概述commons-logging在運行時:(1) 首先會在classpath下尋找自己的配置文件perties。如果找到,則會使用其中指定的Log實現類。(2) 如果找不到perties配置文件,則再查找是否已定義系統環境變量mons.logging.Log,找到則使用其定義的Log實現類。(3) 否則,查看classpath中是否有Log4j的包,如果發現,則自動使用Log4j作為日志實現類。(4) 否則,使用JDK自身的日志實現類(JDK1.4以后才有日志實現類)。(5) 最后,如果還沒找到,就使用commons-logging自己提供的一個簡單的日志實現類SimpleLog。1710.6.2commons-logging的下載和環境搭建可以到/downloads/download_logging.cgi下載commons-logging包。下載頁面如圖10.11所示。單擊頁面中的“1.1.1.zip”鏈接,即可下載commons-logging-1.1.1-bin.zip到本地硬盤。解壓此文件,打開解壓后的文件夾,如圖10.12所示。1810.6.3commons-logging的使用完成以上配置之后,就可以在項目中使用commons-logging了。使用前,還需要了解它的API。在commons-logging的API中需要關注一個抽象類和一個接口。(1) mons.logging.Logpublicvoiddebug(Objectmsg)publicvoiddebug(Objectmsg,Throwablet):publicbooleanisDebugEnabled()(2) mons.logging.LogFactorypublicstaticLoggetLog(Stringname)throwsLogConfigurationExcep
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論