Log4j详细介绍(七)----日志格式化器Layout
日志格式化器Layout負(fù)責(zé)格式化日志信息。方法log.error()的參數(shù)只包含日志信息,利用Layout可以附加其他信息,以輸出更多的信息或者布局顯示。
???????? PatternLayout布局
???????? PatternLayout是最常用的格式化器,用戶可以自定義輸出信息,例如日期,時間,所在的線程,類名,文件名,方法名,信息級別,文件級別,文件行數(shù),例如:
1 # ERROR級別,輸出到A12 3 log4j.rootLogger=DEBUG, A14 5 # 定義A1為控制臺輸出6 7 log4j.appender.A1=org.apache.log4j.ConsoleAppender8 9 log4j.appender.A1.layout=org.apache.log4j.PatternLayout 10 11 #定義輸出格式 12 13 log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%C]-[%p] %m%n?
符號%d, %C,%p,%m,%n等后面的便是參數(shù)將輸出:
1 2013-06-07 20:51:17,933 [com.log4j.test.Log4jJDBCTest]-[ERROR] ERROR級別輸出?
Log4j中常用的參數(shù)表:
| 參數(shù) | 描述 | 實例 |
| c | 輸出Logger所在的類別(即Logger的名字)。 允許使用%c{數(shù)字}輸出部分的名字(從右邊往左邊數(shù))。見實例 | %c將輸出com.log4j.Log4jTest %c{1}將輸出Log4jTest %c{2}將輸出log4j.Log4jTest %c{3}將輸出com.log4j.Log4jTest |
| C | 輸出Logger所在類的名稱 有時候Logger的名稱不同于類名,例如Hibernate中用org.hibernate.SQL作為所有輸出DML語句的Logger的名稱,便于控制。允許使用%C{數(shù)字}輸出部分的名稱(從右邊往左邊)。見實例 | %C將輸出com.log4j.Log4jTest %C{1}將輸出Log4jTest %C{2}將輸出log4j.Log4jTest %C{3}將輸出com.log4j.Log4jTest |
| d | 輸出日期。允許使用%d{yyyy-MM-dd HH:mm:ss}格式化日期。%d不僅支持JDKSimpleDateFormat的日期格式,還支持log4j自己的日期格式,例如ABSOLUTE,DATE,ISO8601等 | %d將輸出2013-06-06 22:24:25,353 %d{yyyy-MM-dd}將輸出2013-06-06 %d{ABSOLUTE}將輸出22:24:25,353 %d{DATE}將輸出06六月2013 22:24:25,253 |
| F | 輸出所在的類文件名稱 | %F將輸出Log4jTest.java |
| l | 輸出語句所在的行數(shù),包括類名,方法名,文件名,行數(shù)等 | %l將輸出com.log4j.test.Log4jTest.main(Log4jTest.java:50) |
| L | 輸出語句所在的行數(shù),只輸出數(shù)字 | %L將輸出 50 |
| m | 輸出日志 | 輸出日志,即log.info(“”),log.debug(“”)參數(shù) |
| M | 輸出方法名 | %M將輸出main |
| n | 換行.Windows下輸出\r\n,Linux下輸出\n | 含行 |
| p | 輸出日志級別(prioriry) | DEBUG,INFO,ERROR,FITAL等 |
| r | 輸出從程序啟動到輸出該日志之間的時間間隔,單位毫秒 | %r將輸出300 |
| t | 輸出當(dāng)前的線程名稱 | %t將輸出main,Thread-0,Thread-1等 |
| % | %%用來輸出百分號 | ? |
?
? Log4j能輸出形形色色的參數(shù),這些參數(shù)內(nèi)容的長度可能是不同的。例如,%Cs輸出類名,有的類名很長,有的類名很短,會導(dǎo)致日志比較凌亂。為了解決該問題,Log4j允許設(shè)置輸出內(nèi)容的長度等,不夠的會用空格補上,是輸出的內(nèi)容編的整齊。
???????? 設(shè)置的方法是在%與參數(shù)符號間添加數(shù)字,例如%20p,%-20p等。正數(shù)表示右對齊,負(fù)數(shù)表示左對齊,數(shù)字表示最小寬度,不足時用空格補齊。還可以設(shè)置最大寬度,如果超出,則截取,方法是用小數(shù)點+數(shù)字設(shè)置,例如%.30p。
???????? 以%p為例,所有的調(diào)整格式見表:
| 格式 | 對齊方式 | 最小寬度 | 最大寬度 | 描述 | 實例 |
| [%10p] | 右對齊 | 10 | ? | 正數(shù)右對齊,最小寬度 | [????? ERROR] |
| [%-10p] | 左對齊 | 10 | ? | 負(fù)數(shù)左對齊,最小寬度 | [ERROR????? ] |
| [%.4p] | ? | ? | 4 | 最大寬度 | [ERROR] |
| [%10.20p] | 右對齊 | 10 | 20 | 正數(shù)右對齊,最大最小寬度 | [????? ERROR] |
| [%-10.20p] | 左對齊 | 10 | 20 | 負(fù)數(shù)左對齊,最大最小寬度 | [ERROR????? ] |
???
HTMLLayout布局
HTMLLayout講日志格式化輸出為HTML代碼,輸出到文件后,可以直接用瀏覽器瀏覽。使用HTMLLayout時,日志文件后綴一般為.html。配置如下:
1 log4j.rootLogger= DEBUG, H2 3 4 5 log4j.appender.H=org.apache.log4j.FileAppender6 7 log4j.appender.H.File=c:\\log.html8 9 log4j.appender.H.Append=false 10 11 #不配置這個會亂碼 12 13 log4j.appender.H.Encoding=GBK 14 15 log4j.appender.H.layout=org.apache.log4j.HTMLLayout?
運行效果如下。深色的為記錄到Exception。
?
好了log4j常用的知識點都介紹完了。
小結(jié):記錄日志時,可以使用Apache的commons-logging日志。該Log只是個接口,如果有Log4j,則使用Log4j記錄日志,否則,會使用JDK的Log。Log4j 配置文件為log4j.properties,需要配置根日志rootLogger,輸出地Appender,格式花器Layout。rootLogger是所有Log的父親,除非重新覆蓋,否則所有Log都將繼承rootLogger的配置。
?
from:?https://www.cnblogs.com/ArtsCrafts/archive/2013/06/07/log4j8.html
總結(jié)
以上是生活随笔為你收集整理的Log4j详细介绍(七)----日志格式化器Layout的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Log4j输出格式控制--log4j的P
- 下一篇: 聊一聊log4j2配置文件log4j2.