隨筆-314  評論-209  文章-0  trackbacks-0
           在項目的開發過程中,系統對日志的要求很細,而且要求分類清楚。所以還是采用了Log4J。

                在強調可重用組件開發的今天,除了自己從頭到尾開發一個可重用的日志操作類外,Apache為我們提供了一個強有力的日志操作包-Log4j。

                Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。

                此外,通過Log4j其他語言接口,您可以在C、php、C++、.Net、PL/SQL程序中使用Log4j,其語法和用法與在Java程序中一樣,使得多語言分布式系統得到一個統一一致的日志組件模塊。而且,通過使用各種第三方擴展,您可以很方便地將Log4j集成到J2EE、JINI甚至是SNMP應用中。

                Log4j配置文件詳細說明(*.properties和*.xml)
                
          屬性文件Properties

          properties屬性文件

          編號 配置項 配置項描述 示例
          1 log4j.threshold 閾值項 log4j.threshold = error
          2 log4j.rootLogger 根日志屬性項 log4j.rootLogger = info,stdout1,stdout2
          3 log4j.category. 子日志屬性項(舊) log4j.category.com.eos = NULL,stdout1
          4 log4j.logger. 子日志屬性項(新) log4j.logger.com.eos.log = debug,stdout2
          5 log4j.additivity. appender是否繼承設置 log4j.additivity.com.eos = false
          6 log4j.appender. 輸出目的地定義項 log4j.appender.stdout2 = org.apache.log4j.ConsoleAppender
          7 log4j.appender.A.layout 輸出格式定義項 log4j.appender.stdout2.layout = org.apache.log4j.PatternLayout

          xml文件

          編號 配置項 配置項描述 示例
          1 threshold 閾值項
          2 root 根日志屬性項
              
              
            

          3 priority 級別項(舊)
          4 level 級別項(新)
          5 category 子日志屬性項(舊)
          6 logger 子日志屬性項(新)
          7 appender-ref 輸出端控制項
          8 additivity appender是否繼承設置
          9 appender 輸出目的地定義項
          10 layout 輸出格式定義項

          詳細說明(只針對Log4j常用的,用戶可以自定義)Appender
          Appender繼承關系
          Appender基本種類
          org.apache.log4j.ConsoleAppender(控制臺)
          org.apache.log4j.FileAppender(文件)
          org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件)
          org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
          org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方)
          · ConsoleAppender選項
          Threshold=WARN:指定日志消息的輸出最低層次。
          ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
          Target=System.err:默認情況下是:System.out,指定輸出控制臺
          · FileAppender 選項
          Threshold=WARN:指定日志消息的輸出最低層次。
          ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
          File=mylog.txt:指定消息輸出到mylog.txt文件。
          Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。
          · DailyRollingFileAppender 選項
          Threshold=WARN:指定日志消息的輸出最低層次。
          ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
          File=mylog.txt:指定消息輸出到mylog.txt文件。
          Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。
          DatePattern='.'yyyy-ww:每周滾動一次文件,即每周產生一個新的文件。當然也可以指定按月、周、
          天、時和分。即對應的格式如下:
          1)'.'yyyy-MM: 每月
          2)'.'yyyy-ww: 每周
          3)'.'yyyy-MM-dd: 每天
          4)'.'yyyy-MM-dd-a: 每天兩次
          5)'.'yyyy-MM-dd-HH: 每小時
          6)'.'yyyy-MM-dd-HH-mm: 每分鐘
          n RollingFileAppender 選項
          Threshold=WARN:指定日志消息的輸出最低層次。
          ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
          File=mylog.txt:指定消息輸出到mylog.txt文件。
          Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。
          MaxFileSize=100KB: 后綴可以是KB, MB 或者是 GB. 在日志文件到達該大小時,將會自動滾動,即將原來
          的內容移到mylog.log.1文件。
          MaxBackupIndex=2:指定可以產生的滾動文件的最大數。

          詳細說明(只針對Log4j,用戶可以自定義)Layout
          Log4j的Layout基本種類
          org.apache.log4j.HTMLLayout(以HTML表格形式布局),
          org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
          org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),
          org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息)
          · HTMLLayout選項
          LocationInfo=true:默認值是false,輸出java文件名稱和行號
          Title=my app file: 默認值是 Log4J Log Messages.      
          n PatternLayout 選項
          log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
          這里需要說明的就是日志信息格式中幾個符號所代表的含義:

          %X: 信息輸出時左對齊;
          %p: 輸出日志信息優先級,即DEBUG,INFO,WARN,ERROR,FATAL,
          %d: 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
          %r: 輸出自應用啟動到輸出該log信息耗費的毫秒數
          %c: 輸出日志信息所屬的類目,通常就是所在類的全名
          %t: 輸出產生該日志事件的線程名
          %l: 輸出日志事件的發生位置,相當于%C.%M(%F:%L)的組合,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java:10)
          %x: 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤其用到像java servlets這樣的多客戶多線程的應用中。
          %%: 輸出一個"%"字符
          %F: 輸出日志消息產生時所在的文件名稱
          %L: 輸出代碼中的行號
          %m: 輸出代碼中指定的消息,產生的日志具體信息
          %n: 輸出一個回車換行符,Windows平臺為"\r\n",Unix平臺為"\n"輸出日志信息換行,可以在%與模式字符之間加上修飾符來控制其最小寬度、最大寬度、和文本的對齊方式。如:
          1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小于20的話,默認的情況下右對齊。
          2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小于20的話,"-"號指定左對齊。
          3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大于30的話,就會將左邊多出的字符截掉,但小于30的話也不會有空格。
          4)%20.30c:如果category的名稱小于20就補空格,并且右對齊,如果其名稱長于30字符, 就從左邊交遠銷出的字符截掉。
          · XMLLayout 選項
          LocationInfo=true:默認值是false,輸出java文件和行號

          日志配置文件內容范例  
          log4j.properties

          1. log4j.rootLogger=DEBUG, CONSOLE    
          2. #DEBUG, CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE    
          3. #log4j.threshold=WARN
          4. log4j.logger.org.apache=INFO, FILE 
          5. log4j.additivity.org.apache=false    
          6.   
          7. ###################    
          8. # Console Appender    
          9. ###################    
          10. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender    
          11. log4j.appender.Threshold=DEBUG    
          12. log4j.appender.CONSOLE.Target=System.out    
          13. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout    
          14. log4j.appender.CONSOLE.layout.ConversionPattern=%d [%p] - %m%n    
          15.   
          16.   
          17. #####################    
          18. # File Appender    
          19. #####################    
          20. log4j.appender.FILE=org.apache.log4j.FileAppender    
          21. log4j.appender.FILE.File=file.log    
          22. log4j.appender.FILE.Append=false    
          23. log4j.appender.FILE.layout=org.apache.log4j.PatternLayout    
          24. log4j.appender.FILE.layout.ConversionPattern=%d [%p] - %m%n    
          25.   
          26.   
          27. ########################    
          28. # Rolling File    
          29. ########################    
          30. log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender    
          31. log4j.appender.ROLLING_FILE.Threshold=ERROR    
          32. log4j.appender.ROLLING_FILE.File=rolling.log    
          33. log4j.appender.ROLLING_FILE.Append=true    
          34. log4j.appender.ROLLING_FILE.MaxFileSize=10KB    
          35. log4j.appender.ROLLING_FILE.MaxBackupIndex=1    
          36. log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout    
          37. log4j.appender.ROLLING_FILE.layout.ConversionPattern=%d [%p] - %m%n    
          38.   
          39.   
          40. ####################    
          41. # Socket Appender    
          42. ####################    
          43. log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender    
          44. log4j.appender.SOCKET.RemoteHost=localhost    
          45. log4j.appender.SOCKET.Port=5001    
          46. log4j.appender.SOCKET.LocationInfo=true    
          47. # Set up for Log Facter 5    
          48. log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout    
          49. log4j.appender.SOCET.layout.ConversionPattern=%d [%p] - %m%n    
          50.   
          51.   
          52. ########################    
          53. # Log Factor 5 Appender    
          54. ########################    
          55. log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender    
          56. log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000    
          57.   
          58.   
          59. ########################    
          60. # SMTP Appender    
          61. #######################    
          62. log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender    
          63. log4j.appender.MAIL.Threshold=FATAL    
          64. log4j.appender.MAIL.BufferSize=10    
          65. log4j.appender.MAIL.From=wuyh@primeton.com    
          66. log4j.appender.MAIL.SMTPHost=mail.primeton.com    
          67. log4j.appender.MAIL.Subject=Log4J Message    
          68. log4j.appender.MAIL.To=test@primeton.com    
          69. log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout    
          70. log4j.appender.MAIL.layout.ConversionPattern=%d [%p] - %m%n    
          71.   
          72.   
          73. ########################    
          74. # JDBC Appender    
          75. #######################    
          76. log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender    
          77. log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test    
          78. log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver    
          79. log4j.appender.DATABASE.user=root    
          80. log4j.appender.DATABASE.password=    
          81. log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES (%d [%p] - %m%n)    
          82. log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout    
          83. log4j.appender.DATABASE.layout.ConversionPattern=%d [%p] - %m%n    
          84.   
          85.   
          86. log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender    
          87. log4j.appender.A1.File=SampleMessages.log4j    
          88. log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'    
          89. log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout    
          90.   
          91. ###################    
          92. #自定義Appender    
          93. ###################    
          94. log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender    
          95.   
          96. log4j.appender.im.host = mail.cybercorlin.net    
          97. log4j.appender.im.username = username    
          98. log4j.appender.im.password = password    
          99. log4j.appender.im.recipient = wuyh@primeton.com    
          100.   
          101. log4j.appender.im.layout=org.apache.log4j.PatternLayout    
          102. log4j.appender.im.layout.ConversionPattern =%d [%p] - %m%n   


          #注意:在屬性配置文件中,屬性值的第一個一定是級別,輸出端可有可無,以逗號分割。(而xml文件格式沒有這種限制)

          log4j.xml
          1. < xml version="1.0" encoding="UTF-8" >    
          2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">    
          3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false" threshold="null">    
          4.   
          5.   
          6. <appender class="org.apache.log4j.ConsoleAppender" name="CONSOLE">    
          7. <param name="Target" value="System.out"/>    
          8. <param name="Threshold" value="INFO"/>    
          9. <layout class="org.apache.log4j.PatternLayout">    
          10. <param name="ConversionPattern" value="%d [%p] - %m%n "/>    
          11. </layout>    
          12. <filter class="org.apache.log4j.varia.DenyAllFilter"/>    
          13. <errorHandler class="org.apache.log4j.varia. FallbackErrorHandler"/>    
          14. </appender>    
          15.   
          16. <appender class="org.apache.log4j.FileAppender" name="FILE">    
          17. <param name="File" value="file.log"/>    
          18. <param name="Append" value="false"/>    
          19. <param name="Threshold" value="INFO"/>    
          20. <layout class="org.apache.log4j.PatternLayout">    
          21. <param name="ConversionPattern" value="%d [%p] - %m%n "/>    
          22. </layout>    
          23. </appender>    
          24.   
          25. <appender class="org.apache.log4j.RollingFileAppender" name="ROLLING_FILE">    
          26. <param name="Threshold" value="INFO"/>    
          27. <param name="File" value="rolling.log"/>    
          28. <param name="Append" value="false"/>    
          29. <param name="MaxFileSize" value="10KB"/>    
          30. <param name="MaxBackupIndex" value="1"/>    
          31. <layout class="org.apache.log4j.PatternLayout">    
          32. <param name="ConversionPattern" value="%d [%p] - %m%n "/>    
          33. </layout>    
          34. </appender>    
          35.   
          36. <logger additivity="false" name="com.eos">    
          37. <level value="info"/>    
          38. <appender-ref ref="CONSOLE"/>    
          39. </logger>    
          40.   
          41. <category additivity="true" name="com.eos.log">    
          42. <priority value="warn"/>    
          43. </category>    
          44.   
          45. <root>    
          46. <priority value="info"/>    
          47. <appender-ref ref="CONSOLE"/>    
          48. </root>    
          49. </log4j:configuration>   

          posted on 2008-05-21 10:35 xzc 閱讀(4003) 評論(1)  編輯  收藏 所屬分類: Log4j

          評論:
          # re: 系統日志分類別輸出至日志文件[Log4j應用][未登錄] 2008-06-13 20:06 | xzc
          輸出到文件 RollingFileAppender的擴展,可以提供一種日志的備份功能。
          log4j.appender.R=org.apache.log4j.RollingFileAppender


          日志文件的名稱
          log4j.appender.R.File=log4j.log
          日志文件的大小
          log4j.appender.R.MaxFileSize=100KB
          保存一個備份文件
          log4j.appender.R.MaxBackupIndex=1

          log4j.appender.R.layout=org.apache.log4j.TTCCLayout

          在文件后面繼續寫

          log4j.appender.ROLLING_FILE.Append=true

          設置配置文件的編碼

          log4j.appender.ROLLING_FILE.encoding=UTF-8
            回復  更多評論
            
          主站蜘蛛池模板: 綦江县| 明星| 黎平县| 辽宁省| 鹿邑县| 长宁区| 离岛区| 沙坪坝区| 五台县| 潜山县| 綦江县| 弥勒县| 临沧市| 延安市| 香河县| 诏安县| 长丰县| 灵璧县| 上饶市| 泗阳县| 洞头县| 抚顺市| 安新县| 清河县| 泾源县| 洪湖市| 休宁县| 碌曲县| 廉江市| 泰州市| 那曲县| 白山市| 琼结县| 土默特左旗| 巴林右旗| 开江县| 尉犁县| 平顺县| 阜南县| 宜黄县| 丰顺县|