posts - 70,comments - 408,trackbacks - 0

             log4j,顧名思義是專門用來做日志的,有一些書和教程經(jīng)常把這種非常簡單的東西講的亂作一團,讓一些處于學(xué)習(xí)階段的朋友看了以后,感覺暈頭轉(zhuǎn)向的,我曾經(jīng)就是受害人之一,所以今天發(fā)表一篇,讓學(xué)習(xí)的人一看就懂的小文章,希望對一些學(xué)習(xí)log4j和沒用過log4j的朋友起到幫助.

             log4jApache組織的一個開源項目,它是一個日志操作包,通過使用Log4j可以指定日志信息輸出的目的地,如控制臺,文件,GUI組件,NT的時間記錄器,還可以控制每一條日志輸出的格式,此外通過定義日志的級別,能夠非常細致的控制日志的輸出,最好的地方是這些功能可以通過一個配置文件來靈活的進行配置,而不需要修改程序代碼.在應(yīng)用程序中輸出日志有三個目的:

          1)     監(jiān)視代碼變量的變化情況,把詳細信息記錄到文件中,進行統(tǒng)計分析.

          2)     跟蹤代碼運行軌跡,作為日后審計的依據(jù).

          3)     擔(dān)當(dāng)集成開發(fā)環(huán)境中的調(diào)試器的作用,向文件和控制器打印代碼的調(diào)試信息.

           

             首先我們要先了解點概念的東西,很簡單,先知道它的6個基本類別,就是日志的級別.

          1)     fatal致命的

          2)     error錯誤

          3)     warn警告

          4)     info信息

          5)     debug調(diào)試

          6)     trace細節(jié)

             在強調(diào)可重用組件的今天,除了自己從頭到尾開發(fā)一個可重用的日志操作類以外,還有一個Apache為我們提供的一個強有力的現(xiàn)成的日志操作包Log4j.主要由三大組件構(gòu)成:

          1)     Logger:負責(zé)生成日志,并能夠?qū)θ罩拘畔⑦M行分類篩選.

          2)     Appender:定義了日志信息輸出的目的地,指定日志信息應(yīng)該被輸出到什么地方.

          3)     Layout:指定日志信息的輸出格式.

             概念的東西就這么點,看看記住就OK.主要是配置文件,這里我們就以一個JAVA工程當(dāng)例子,因為這樣簡單明了,讓人容易理解.我相信如果在一個簡單的JAVA工程里能把log4j理解透徹了.就算換到別的工程里也應(yīng)該融會貫通了.首先建一個JAVA工程,然后把log4jjar包放入工程的classpath,就是放在工程的根目錄就OK.然后創(chuàng)建一個log4j.properties的文件,記住這個文件的名字是固定的.log4j會自己來尋找這個文件,至于這個文件的配置我們稍后在說.OK現(xiàn)在包導(dǎo)好了,配置文件也弄好了.我們在類里簡單的調(diào)用log4j就可以使用了.下邊是例子:

          import org.apache.log4j.Logger;

          public class Log {

                 static Logger log = Logger.getLogger(Log.class);

                 public static void main(String[] args) {

                        log.fatal("致命...");

                        log.error("錯誤...");

                        log.info("信息...");

                        log.debug("調(diào)試...");

                 }

          }

           

          #這里是定義了日志輸出的級別DUBUG,然后聲明一個控制臺和文件,名字隨便起.

          log4j.rootLogger=DEBUG,console,file

           

          #這里是配置日志輸出控制臺的相關(guān)屬性

          log4j.appender.console=org.apache.log4j.ConsoleAppender

          log4j.appender.console.layout=org.apache.log4j.PatternLayout

          log4j.appender.console.layout.ConversionPattern=%-5p %d [%t] (%F,%L) - %m%n

           

          #這里是配置日志輸出文件的相關(guān)屬性

          log4j.appender.file=org.apache.log4j.RollingFileAppender

          log4j.appender.file.File=log.log

          log4j.appender.file.MaxFileSize=100KB

          log4j.appender.file.MaxBackupIndex=1

          log4j.appender.file.layout=org.apache.log4j.PatternLayout

          log4j.appender.file.layout.ConversionPattern=%-5p %d [%t] (%F,%L) - %m%n

           

             OK,你調(diào)試通過了么?如果通過了,但是想知道配置文件里各各屬性的具體含義,那么我在附件里上傳了一份比較間接的log4j文檔,PDF格式的.Log4J.pdf在熟悉了文檔里的相關(guān)配置的含義之后,稍加練習(xí)靈活運用就算掌握了log4j.

          posted on 2007-05-10 16:07 我心依舊 閱讀(2556) 評論(8)  編輯  收藏

          FeedBack:
          # re: 簡單化 log4j
          2007-05-11 09:20 | BeanSoft
          是呀,先跑個例子,再深入...現(xiàn)在的教程都是介紹的一塌糊涂,把各種概念都說一遍,就是沒突出重點.  回復(fù)  更多評論
            
          # re: 簡單化 log4j
          2007-05-11 10:32 | 交口稱贊
          不錯,就喜歡這種簡潔的文章,
          沒有廢話,直觀。

          有些人寫的東西就喜歡扯概念,唬人。
          嚴(yán)重同意樓上。  回復(fù)  更多評論
            
          # re: 簡單化 log4j [未登錄]
          2007-05-11 10:43 | 小木
          不錯啊  回復(fù)  更多評論
            
          # re: 簡單化 log4j
          2007-05-11 11:12 | yyuan
          但有些人使用Log4j時,不是簡單的調(diào)用:
          Logger logger = Logger.getLogger(XXX.class);

          而是自己又寫了個singleton把Logger封裝起來,甚至封裝Logger.debug等方法,就是不理解他們!  回復(fù)  更多評論
            
          # re: 簡單化 log4j
          2007-05-11 11:18 | BeanSoft
          Log4j 貌似本身就是單例的... 哈哈, 大概他們是為了用 Spring 依賴注入吧, 或者想將來自己實現(xiàn)一套 logger 或者換別的實現(xiàn).  回復(fù)  更多評論
            
          # re: 簡單化 log4j
          2007-05-11 16:36 | 久城
          學(xué)習(xí)!~的確簡單明了!  回復(fù)  更多評論
            
          # re: 簡單化 log4j
          2007-05-13 23:00 | Alex
          log4j支持動態(tài)切換不同的實現(xiàn),建議import apache commons 的 Logger,可以實現(xiàn)多態(tài)  回復(fù)  更多評論
            
          # re: 簡單化 log4j [未登錄]
          2008-02-26 12:43 | sky
          有研究啊  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 汉寿县| 名山县| 邵阳市| 鄱阳县| 郑州市| 大英县| 辉南县| 介休市| 峨山| 南涧| 溆浦县| 湘西| 宜阳县| 西乡县| 临汾市| 黄石市| 溆浦县| 通城县| 明溪县| 固阳县| 浑源县| 揭西县| 清远市| 屏南县| 潮州市| 涿鹿县| 崇礼县| 陇南市| 类乌齐县| 伊吾县| 景洪市| 莱芜市| 孟连| 尚志市| 乌鲁木齐县| 萝北县| 深圳市| 集安市| 盖州市| 浦北县| 娄底市|