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