Log4j.xml配置
阿新 • • 發佈:2019-01-08
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- 根節點的配置順序: renderer appender plugin logger category root loggerfactory categoryfactory --> <!-- ========================================================================================= --> <!-- org.apache.log4j.ConsoleAppender 控制檯輸出 org.apache.log4j.FileAppender 檔案日誌輸出 org.apache.log4j.DailyRollingFileAppender 每個時間段產生一個日誌檔案 org.apache.log4j.RollingFileAppender 檔案大小到達指定尺寸的時候產生一個新的檔案 org.apache.log4j.WriterAppender 將日誌資訊以流格式傳送到任意指定的地方 org.apache.log4j.net.SMTPAppender 發郵件輸出日誌 org.apache.log4j.net.SocketAppender Socket日誌 org.apache.log4j.nt.NTEventLogAppender Window NT日誌 org.apache.log4j.net.SyslogAppender org.apache.log4j.net.JMSAppender org.apache.log4j.AsyncAppender org.apache.log4j.varia.NullAppender org.apache.log4j.jdbc.JDBCAppender --> <!-- ========================================================================================= --> <!-- 控制檯輸出:org.apache.log4j.ConsoleAppender Threshold=WARN 指定日誌訊息的輸出最低層次。 ImmediateFlush=true 預設值是 true,意謂著所有的訊息都會被立即輸出。 Target=System.err 預設情況下是:System.out,指定輸出控制檯 --> <appender name="Console" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="ALL"></param> <param name="ImmediateFlush" value="true"></param> <param name="Target" value="System.out"></param> <layout class="org.apache.log4j.TTCCLayout" /> </appender> <!-- ========================================================================================= --> <!-- 檔案日誌輸出:org.apache.log4j.FileAppender Threshold=WARN 指定日誌訊息的輸出最低層次。 ImmediateFlush=true 預設值是 true,意謂著所有的訊息都會被立即輸出。 File=mylog.txt 指定訊息輸出到 mylog.txt 檔案。 Append=false 預設值是 true,即將訊息增加到指定檔案中,false 指將訊息覆蓋指定的檔案內容。 --> <appender name="File" class="org.apache.log4j.FileAppender"> <param name="Threshold" value="ALL"></param> <param name="ImmediateFlush" value="true"></param> <param name="File" value="F:\\FileAppender.txt"></param> <param name="Append" value="false"></param> <layout class="org.apache.log4j.TTCCLayout" /> </appender> <!-- ========================================================================================= --> <!-- 每個時間段產生一個日誌檔案:org.apache.log4j.DailyRollingFileAppender Threshold=WARN 指定日誌訊息的輸出最低層次。 ImmediateFlush=true 預設值是 true,意謂著所有的訊息都會被立即輸出。 File=mylog.txt 指定訊息輸出到 mylog.txt 檔案。 Append=false 預設值是 true,即將訊息增加到指定檔案中,false 指將訊息覆蓋指定的檔案內容。 DatePattern=.yyyy-ww 每週滾動一次檔案,即每週產生一個新的檔案。 當然也可以指定按月、周、天、時和分。即對應的格式如下: .yyyy-MM 每月 .yyyy-ww 每週 .yyyy-MM-dd 每天 .yyyy-MM-dd-a 每天兩次 .yyyy-MM-dd-HH 每小時 .yyyy-MM-dd-HH-mm 每分鐘 --> <appender name="DailyRollingFile" class="org.apache.log4j.DailyRollingFileAppender"> <param name="Threshold" value="ALL"></param> <param name="ImmediateFlush" value="true"></param> <param name="File" value="F:\\DailyRollingFileAppender.txt"></param> <param name="Append" value="false"></param> <param name="DatePattern" value=".yyyy-MM-dd-HH-mm"></param> <layout class="org.apache.log4j.TTCCLayout" /> </appender> <!-- ========================================================================================= --> <!-- 檔案大小到達指定尺寸的時候產生一個新的檔案:org.apache.log4j.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 指定可以產生的滾動檔案的最大數。 --> <appender name="RollingFile" class="org.apache.log4j.RollingFileAppender"> <param name="Threshold" value="ALL"></param> <param name="ImmediateFlush" value="true"></param> <param name="File" value="F:\\RollingFileAppender.txt"></param> <param name="Append" value="false"></param> <param name="MaxFileSize" value="1KB"></param> <param name="MaxBackupIndex" value="3"></param> <layout class="org.apache.log4j.TTCCLayout" /> </appender> <!-- ========================================================================================= --> <!-- ========================================================================================= --> <!-- org.apache.log4j.HTMLLayout 以HTML表格形式佈局 org.apache.log4j.PatternLayout 可以靈活地指定佈局模式 org.apache.log4j.xml.XMLLayout XML檔案佈局日誌 org.apache.log4j.SimpleLayout 包含日誌資訊的級別和資訊字串 org.apache.log4j.TTCCLayout 包含日誌產生的時間、執行緒、類別等等資訊 --> <!-- ========================================================================================= --> <!-- 以HTML表格形式佈局:org.apache.log4j.HTMLLayout LocationInfo=true 預設值是false,輸出java檔名稱和行號 Title=日誌資訊 預設值是"Log4J Log Messages" --> <appender name="HTML" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.HTMLLayout"> <param name="LocationInfo" value="true"></param> <param name="Title" value="日誌資訊"></param> </layout> </appender> <!-- ========================================================================================= --> <!-- 可以靈活地指定佈局模式:org.apache.log4j.PatternLayout ConversionPattern=%m%n 指定怎樣格式化指定的訊息,如:%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n Log4J採用類似C語言中的printf函式的列印格式格式化日誌資訊,列印引數如下: -X號 X資訊輸出時左對齊; %p 輸出日誌資訊優先順序,即 DEBUG,INFO,WARN,ERROR,FATAL, %d 輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS} %r 輸出自應用啟動到輸出該 log 資訊耗費的毫秒數 %c 輸出日誌資訊所屬的類目,配置檔案中的名字,通常就是所在類的全名(若使用 rootLogger) %t 輸出產生該日誌事件的執行緒名 %l 輸出日誌事件的發生位置,相當於%C.%M(%F:%L)的組合,包括類目名、發生的執行緒,以及行數。舉例:Testlog4.main(TestLog4.java:10) %x 輸出和當前執行緒相關聯的 NDC(巢狀診斷環境),尤其用到像 java servlets 這樣的多客戶多執行緒的應用中。 %% 輸出一個"%"字元 %F 輸出日誌訊息產生時所在的檔名稱 %L 輸出程式碼中的行號 %m 輸出程式碼中指定的訊息,產生的日誌具體資訊 %n 輸出一個回車換行符,Windows 平臺為"\r\n",Unix 平臺為"\n"輸出日誌資訊換行 %M 輸出日誌資訊所屬的方法 可以在%與模式字元之間加上修飾符來控制其最小寬度、最大寬度、和文字的對齊方式。如: %20c 指定輸出 category 的名稱,最小的寬度是 20,如果 category 的名稱小於 20 的話,預設的情況下右對齊。 %-20c 指定輸出 category 的名稱,最小的寬度是 20,如果 category 的名稱小於 20 的話,"-"號指定左對齊。 %.30c 指定輸出 category 的名稱,最大的寬度是 30,如果 category 的名稱大於 30 的話,就會將左邊多出的字元截掉,但小於 30 的話也不會有空格。 %20.30c 如果 category 的名稱小於 20 就補空格,並且右對齊,如果其名稱長於 30 字元,就從左邊交遠銷出的字元截掉 --> <appender name="Pattern" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="級別:[%-6p] 時間:[%d{yyy-MMM-dd HH:mm:ss,SSS}] %-50l %m%n"></param> </layout> </appender> <!-- ========================================================================================= --> <!-- XML檔案佈局日誌:org.apache.log4j.xml.XMLLayout LocationInfo=true 預設值是 false,輸出 java 檔案和行號 --> <appender name="XML" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.xml.XMLLayout"> <param name="LocationInfo" value="true"></param> </layout> </appender> <!-- ========================================================================================= --> <!-- ========================================================================================= --> <logger name="ConsoleLog" additivity="false"> <level value="WARN" /> <appender-ref ref="Console" /> </logger> <logger name="FileLog" additivity="false"> <level value="WARN" /> <appender-ref ref="File" /> </logger> <logger name="DailyRollingFileLog" additivity="false"> <level value="WARN" /> <appender-ref ref="DailyRollingFile" /> </logger> <logger name="RollingFileLog" additivity="false"> <level value="WARN" /> <appender-ref ref="RollingFile" /> </logger> <logger name="HTMLLog" additivity="false"> <level value="WARN" /> <appender-ref ref="HTML" /> </logger> <logger name="PatternLog" additivity="false"> <level value="WARN" /> <appender-ref ref="Pattern" /> </logger> <logger name="XMLLog" additivity="false"> <level value="WARN" /> <appender-ref ref="XML" /> </logger> <!-- ========================================================================================= --> <!-- 優先順序:ALL < DEBUG < INFO <WARN < ERROR < FATAL < OFF --> <root> <priority value="ALL" /> <appender-ref ref="Console" /> </root> </log4j:configuration>