<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

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

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

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

          Log4j配置文件詳細(xì)說明(*.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是否繼承設(shè)置 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是否繼承設(shè)置
    9 appender 輸出目的地定義項
    10 layout 輸出格式定義項

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

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

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

    日志配置文件內(nèi)容范例  
    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文件格式?jīng)]有這種限制)

    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 閱讀(3997) 評論(1)  編輯  收藏 所屬分類: Log4j

    評論:
    # re: 系統(tǒng)日志分類別輸出至日志文件[Log4j應(yīng)用][未登錄] 2008-06-13 20:06 | xzc
    輸出到文件 RollingFileAppender的擴(kuò)展,可以提供一種日志的備份功能。
    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

    在文件后面繼續(xù)寫

    log4j.appender.ROLLING_FILE.Append=true

    設(shè)置配置文件的編碼

    log4j.appender.ROLLING_FILE.encoding=UTF-8
      回復(fù)  更多評論
      
    主站蜘蛛池模板: 999久久久免费精品国产| 亚洲国产精品专区| 免费无遮挡无码视频网站| 久操视频在线免费观看| 日韩在线观看免费完整版视频| 亚洲国产成人久久综合一区| 亚洲码国产精品高潮在线| 国产美女被遭强高潮免费网站| 亚洲性线免费观看视频成熟| 久操视频免费观看| 91福利免费网站在线观看| 尤物视频在线免费观看 | 91青青青国产在观免费影视| 久久国产精品免费一区| 免费无遮挡无遮羞在线看 | 国产在线a不卡免费视频| 99热在线精品免费全部my| 18女人腿打开无遮掩免费| 日韩免费视频一区二区| 中国一级毛片视频免费看| 一级有奶水毛片免费看| 亚洲免费日韩无码系列| 有色视频在线观看免费高清在线直播| 亚洲国产日韩a在线播放| 亚洲日产乱码一二三区别| 亚洲乱码一区二区三区国产精品| 亚洲欧洲国产视频| 亚洲人成综合在线播放| 亚洲国产精品午夜电影| 亚洲一区中文字幕在线观看| 亚洲精品无码久久毛片波多野吉衣| 亚洲综合成人网在线观看| 亚洲天天做日日做天天欢毛片| 亚洲男人天堂2017| 亚洲老熟女@TubeumTV| 亚洲成人一级电影| 精品亚洲AV无码一区二区三区 | 日批视频网址免费观看| 九九美女网站免费| 8x8x华人永久免费视频| 又粗又大又黑又长的免费视频|