java日志级别的作用_Java系统日志级别对性能的影响性
先介紹下java系統的日志
日志框架:是一種日志接口,不負責具體的日志輸出形式(有點類似于JDBC),可以靈活的切換日志輸出形式。常見的日志框架有slf4j、jcl,只提供Logger、LoggerFactory等接口
日志系統:是應用實際使用的日志工具,主要有log4j,jul,logback等。一般在程序中應該避免直接使用,可以保證程序具有一定的靈活性。
Logger:日志輸出實例,包含Appender和Layout
Appender:日志輸出目標,如控制臺,文件,數據庫等。多個Appender可以被關聯到任何Logger上,所以可以到多個輸出文件上記錄相同的信息。
Layout:定義日志輸出格式:時間戳、線程名稱、日志級別、日志內容、對應輸出該日志的類、對應輸出該日志的方法、行號及MDC信息
Level :日志級別,通過配置不同的日志界別來打印不同的日志信息。
log4j定義了8個級別的log(除去OFF和ALL,可以說分為6個級別),優先級從高到低依次為:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。
Log4j建議只使用四個級別,優先級 從高到低分別是 ERROR、WARN、INFO、DEBUG。日志記錄器(Logger)的行為是分等級的:
日志記錄器(Logger)是日志處理的核心組件。log4j具有5種正常級別(Level)。:
1.static Level DEBUG :
DEBUG Level指出細粒度信息事件對調試應用程序是非常有幫助的。
2.static Level INFO
INFO level表明 消息在粗粒度級別上突出強調應用程序的運行過程。
3.static Level WARN
WARN level表明會出現潛在錯誤的情形。
4.static Level ERROR
ERROR level指出雖然發生錯誤事件,但仍然不影響系統的繼續運行。
5.static Level FATAL
FATAL level指出每個嚴重的錯誤事件將會導致應用程序的退出。
另外,還有兩個可用的特別的日志記錄級別:
1.static Level ALL
ALL Level是最低等級的,用于打開所有日志記錄。
2.static Level OFF
OFF Level是最高等級的,用于關閉所有日志記錄。
針對于日志級別的問題分析如下:
一、場景描述:
“xx交易”單交易200并發下穩定執行10分鐘,TPS為47,兩臺門戶前置平均cpu占用81%,其中sys利用率達到32%。(日志級別為info)
分析過程
1、抓取并分析javacore文件
阻塞進程共92個。其中85個線程被同一個線程阻塞(即WebContainer:2184),此線程抓取javacore文件的瞬間正在調用org/apache/log4j/spi/LocationInfo方法。線程阻塞現象會降低并發處理性能,因此分析客戶登錄交易性能差可能與log4j寫日志有關。如圖所示:
2、驗證性測試:降低日志級別測試,即由info級別改為error級別
抓取javacore文件并分析
阻塞線程僅有18個,其中僅有2個線程被同一個線程阻塞(即WebContainer:92)。
3、對比
測試結果對比:相同測試場景分別在info和error級別下,TPS、資源利用率等對比
序號
日志級別
并發數
TPS
兩臺前置服務器cpu平均利用率
1
Info
200
47
81%(其中sys使用34%)
2
Error
200
108
81%(其中sys使用7.5%)
日志輸出量對比:分別在info和error級別下,執行1次客戶登錄操作,產生的日志量對比
日志文件
Info級別(byte)
Error級別(byte)
portalweb_all.log
28242
396
portalweb_business.log
21567
396
portalweb_db.log
263
0
portalweb_sign.log
0
0
總量
50072
792
結論
日志級別即日志的輸出量對系統性能具有一定的影響。
四、建議
建議項目組修改info級別下的日志輸出量,以提高系統處理能力。
總結
以上是生活随笔為你收集整理的java日志级别的作用_Java系统日志级别对性能的影响性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比特币为什么在周末暴跌?比特币暴跌的原因
- 下一篇: java里dir是什么意思_关于文件系统