小編給大家分享一下Java中日志的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都創(chuàng)新互聯(lián)專注于怒江州企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站制作。怒江州網(wǎng)站建設(shè)公司,為怒江州等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
Log4j 的全稱為 Log for java,即專門用于 Java 語言的日志記錄工具。
為了方便對于日志信息的輸出顯示,對日志內(nèi)容進(jìn)行了分級管理。日志級別由高到低,共分 6 個級別:
fatal(致命的)
error
warn
info
debug
trace(堆棧)
日志屬性文件 log4j.properties
是專門用于控制日志輸出的。其主要進(jìn)行三方面控制:
輸出位置:控制日志將要輸出的位置,是控制臺還是文件等。
輸出布局:控制日志信息的顯示形式。
輸出級別:控制要輸出的日志級別。
日志屬性文件由兩個對象組成:日志附加器與根日志。
根日志,即為 Java 代碼中的日志記錄器,其主要由兩個屬性構(gòu)成:日志輸出級別與日志附加器。
日志附加器,則由日志輸出位置定義,由其它很多屬性進(jìn)行修飾,如輸出布局、文件位置、文件大小等。
所謂日志附加器,就是為日志記錄器附加上很多其它設(shè)置信息。附加器的本質(zhì)是一個接口,其定義語法為:log4j.appender.appenderName
= 輸出位置
org.apache.log4j.ConsoleAppender
:日志輸出到控制臺
org.apache.log4j.FileAppender
:日志輸出到文件
org.apache.log4j.RollingFileAppender
:當(dāng)日志文件大小到達(dá)指定尺寸的時候?qū)a(chǎn)生一個新的日志文件
org.apache.log4j.DailyRollingFileAppender
:每天產(chǎn)生一個日志文件
org.apache.log4j.HTMLLayout
:網(wǎng)頁布局,以 HTML 表格形式布局
org.apache.log4j.SimpleLayout
:簡單布局,包含日志信息的級別和信息字符串
org.apache.log4j.PatternLayout
:匹配器布局,可以靈活地指定布局模式。其主要是通過設(shè)置
PatternLayout 的 ConversionPattern 屬性值來控制具體輸出格式的 。
打印參數(shù): Log4J 采用類似 C 語言中的 printf 函數(shù)的打印格式格式化日志信息
%m
:輸出代碼中指定的消息
%p
:輸出優(yōu)先級,即 DEBUG
,INFO
,WARN
,ERROR
,FATAL
%r
:輸出自應(yīng)用啟動到輸出該 log 信息耗費(fèi)的毫秒數(shù)
%c
:輸出所屬的類目,通常就是所在類的全名
%t
:輸出產(chǎn)生該日志事件的線程名
%n
:輸出一個回車換行符,Windows 平臺為 /r/n
,Unix 平臺為 /n
%d
:輸出日志時間點(diǎn)的日期或時間,默認(rèn)格式為 ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},輸出類似:2002年10月18日 22:10:28,921
%l
:輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。舉例:Testlog4.main(TestLog4.java: 10 )
在 src/main/resources 目錄下創(chuàng)建名為 log4j.properties 的屬性配置文件
日志配置相關(guān)說明:
log4j.rootLogger:根日志,配置了日志級別為 INFO,預(yù)定義了名稱為 console、file 兩種附加器
log4j.appender.console:console 附加器,日志輸出位置在控制臺
log4j.appender.console.layout:console 附加器,采用匹配器布局模式
log4j.appender.console.layout.ConversionPattern:console 附加器,日志輸出格式為:日期 日志級別 [類名] - 消息換行符
log4j.appender.file:file 附加器,每天產(chǎn)生一個日志文件
log4j.appender.file.File:file 附加器,日志文件輸出位置 logs/log.log
log4j.appender.file.layout:file 附加器,采用匹配器布局模式
log4j.appender.A3.MaxFileSize:日志文件最大值
log4j.appender.A3.MaxBackupIndex:最多紀(jì)錄文件數(shù)
log4j.appender.file.layout.ConversionPattern:file 附加器,日志輸出格式為:日期 日志級別 [類名] - 消息換行符
slf4j 的全稱是 Simple Loging Facade For Java,即它僅僅是一個為 Java 程序提供日志輸出的統(tǒng)一接口,并不是一個具體的日志實現(xiàn)方案,就比如 JDBC 一樣,只是一種規(guī)則而已。所以單獨(dú)的 slf4j 是不能工作的,必須搭配其他具體的日志實現(xiàn)方案。
占位符說明
打日志的時候使用了 {} 占位符,這樣就不會有字符串拼接操作,減少了無用 String 對象的數(shù)量,節(jié)省了內(nèi)存。并且,記住,在生產(chǎn)最終日志信息的字符串之前,這個方法會檢查一個特定的日志級別是不是打開了,這不僅降低了內(nèi)存消耗而且預(yù)先降低了 CPU 去處理字符串連接命令的時間。
在公開的阿里巴巴 java 開發(fā)手冊中對日志規(guī)范也有相關(guān)介紹,在此,筆者介紹其中兩條規(guī)范,即日志命名方式和日志保存期限。
日志命名方式:
其中 appName 表示應(yīng)用名;logType 表示日志類型,推薦分類有 stats,monitor,visit 等;logName 為日志描述,這種命名好處是可以快速清晰地了解日志文件類型和目的,便于歸類查找。
日志保持期限:
如何確定日志保持期限是個比較棘手的問題,如果日志存放時間過長,會消耗大量存儲資源,甚至?xí)?dǎo)致磁盤壓力過大影響系統(tǒng)穩(wěn)定性;如果日志存放時間過短,可能導(dǎo)致日志數(shù)據(jù)“丟失”,出現(xiàn)問題時無法追溯。阿里 java 開發(fā)手冊中對日志文件保存期限的建議是至少保存 15 天。在實際應(yīng)用中,可以根據(jù)日志文件的重要程度、文件大小以及磁盤空間自行調(diào)整,此外,還可以對日志進(jìn)行監(jiān)控,定期轉(zhuǎn)儲。
以上是“Java中日志的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!