posts - 70,comments - 408,trackbacks - 0

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

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

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

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

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

           

             首先我們要先了解點(diǎn)概念的東西,很簡單,先知道它的6個(gè)基本類別,就是日志的級(jí)別.

          1)     fatal致命的

          2)     error錯(cuò)誤

          3)     warn警告

          4)     info信息

          5)     debug調(diào)試

          6)     trace細(xì)節(jié)

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

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

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

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

             概念的東西就這么點(diǎn),看看記住就OK.主要是配置文件,這里我們就以一個(gè)JAVA工程當(dāng)例子,因?yàn)檫@樣簡單明了,讓人容易理解.我相信如果在一個(gè)簡單的JAVA工程里能把log4j理解透徹了.就算換到別的工程里也應(yīng)該融會(huì)貫通了.首先建一個(gè)JAVA工程,然后把log4jjar包放入工程的classpath,就是放在工程的根目錄就OK.然后創(chuàng)建一個(gè)log4j.properties的文件,記住這個(gè)文件的名字是固定的.log4j會(huì)自己來尋找這個(gè)文件,至于這個(gè)文件的配置我們稍后在說.OK現(xiàn)在包導(dǎo)好了,配置文件也弄好了.我們?cè)陬惱锖唵蔚恼{(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("錯(cuò)誤...");

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

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

                 }

          }

           

          #這里是定義了日志輸出的級(jí)別DUBUG,然后聲明一個(gè)控制臺(tái)和文件,名字隨便起.

          log4j.rootLogger=DEBUG,console,file

           

          #這里是配置日志輸出控制臺(tái)的相關(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í)靈活運(yùn)用就算掌握了log4j.

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

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

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 栾川县| 屏边| 开江县| 利辛县| 安吉县| 北辰区| 元阳县| 新野县| 平塘县| 天气| 北宁市| 托克逊县| 阆中市| 闽侯县| 简阳市| 城步| 微山县| 灵丘县| 木兰县| 长兴县| 青冈县| 绍兴县| 浙江省| 深州市| 绥化市| 凌源市| 华池县| 香格里拉县| 怀宁县| 南皮县| 稷山县| 独山县| 固始县| 永济市| 浦北县| 永和县| 襄城县| 泸州市| 仪征市| 慈利县| 静宁县|