您好,登錄后才能下訂單哦!
小編給大家分享一下log4j有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
便于分析程序執行過程
方便調試
可以將業務數據存儲到文件、數據庫,有利于后期分析
log4j簡介
log4j是 Apache 的一個開源項目,通過設置日志級別來指定輸出哪些類型的日志。log4j功能強大:
可以將日志信息輸出到控制臺、文件、GUI 組件、甚至是數據庫中
可以控制每一條日志的輸出格式
log4j的日志級別
log4j在 org.apache.log4j.Level 類中定義了七種日志級別,級別從高到低依次為:
OFF 最高日志級別,即關閉日志
FATAL 導致應用程序退出的錯誤
ERROR 運行發生錯誤,但仍不影響系統(程序)繼續運行
WARN 警告,即潛在的錯誤情形
INFO 一般用在粗粒度級別上,記錄程序全程執行過程,強調應用程序的運行全程
DEBUG 一般用于細粒度級別上,對調試應用程序非常有幫助
ALL 最低日志級別,記錄所有級別的日志
一般只使用4個級別,優先級從高到低為 ERROR > WARN > INFO > DEBUG。
log4j的組成
log4j 主要由三部分組成:
(1) Loggers (日志記錄器) 控制日志的輸出級別與日志是否輸出
(2)Appenders(輸出端) 指定日志的輸出到哪個地方(輸出到控制臺、文件等),常用的輸出端:
ConsoleAppender 將日志輸出到控制臺
FileAppender 將日志輸出到文件中
RollingFileAppender 將日志信息輸出到一個文件中,并指定文件尺寸,當文件大小達到指定尺寸時,會自動把文件改名,同時創建一個新的文件來保存日志
DailyRollingFileAppender 將日志輸出到文件中,會周期性輸出到一個新的文件
JDBCAppender 把日志信息保存到數據庫中
(3)Layout(日志格式化器),常用的格式化器類型:
HTMLLayout 格式化日志輸出為HTML表格形式
SimpleLayout 簡單的日志輸出格式化
PatternLayout 最強大的格式化器,可自定義日志輸出格式
log4j使用示例
注意是log4j,不是log4j2。
log4j的作者先開發了log4j,版本號以1開頭。后面對log4j進行重構,改進了log4j的不足,即log4j2,版本號以2開頭。log4j和log4j2的用法區別很大。
下載的log4j,有的版本含有log4j.jar、log4j-core.jar、log4j-api.jar3個jar包,我們只需導入log4j.jar。
(2)src下新建log4j的配置文件log4j.properties
### 日志記錄器Logger的全局設置 ### #第一個參數指定輸出的最低日志級別,即只輸出該級別及以上級別的日志 #后面的參數指定要進行哪些配置 log4j.rootLogger = DEBUG,stdout,D,E ### 設置控制臺輸出 ### #stdout即standard out 標準輸出,默認為控制臺,所以可將stdout換為Console log4j.appender.stdout = org.apache.log4j.ConsoleAppender #指定標準輸出設備為系統輸出設備 log4j.appender.stdout.Target = System.out #指定使用自定義的格式化器 log4j.appender.stdout.layout = org.apache.log4j.PatternLayout #指定日志輸出格式 log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 輸出DEBUG及以上級別的日志到D://logs/debug.log### #配置時,輸出級別用首字母表示,D即DEBUG log4j.appender.D = org.apache.log4j.DailyRollingFileAppender #指定將日志輸出到哪個文件中 log4j.appender.D.File = D://logs/debug.log #指定文件寫入方式為追加 log4j.appender.D.Append = true #指定最低輸出級別 log4j.appender.D.Threshold = DEBUG log4j.appender.D.DatePattern='.'yyyy-MM-dd-HH-mm #指定日志輸出格式 log4j.appender.D.layout = org.apache.log4j.SimpleLayout ### 輸出ERROR及以上級別的日志到D://logs/error.log ### log4j.appender.E = org.apache.log4j.RollingFileAppender log4j.appender.E.File =D://logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR #指定日志文件的最大尺寸 log4j.appender.E.MaxFileSize = 2KB #指定最大備份數為5 log4j.appender.E.MaxBackupIndex = 5 #指定日志輸出格式使用自定義格式 log4j.appender.E.layout = org.apache.log4j.PatternLayout #指定日志格式 log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
此配置只是為了演示效果。
DailyRollingFileAppender 獨有的選項
DatePattern='.'yyyy-ww
可選的值:
'.'yyyy-MM 每月
'.'yyyy-ww 每周
'.'yyyy-MM-dd 每天
'.'yyyy-MM-dd-a 每天兩次
'.'yyyy-MM-dd-HH 每小時
'.'yyyy-MM-dd-HH-mm 每分鐘
比如 '.'yyyy-MM-dd-HH-mm ,每分鐘都產生一個同名的新文件來保存這分鐘內的日志。
同名的新文件?就是在擴展名后加上時間,要查看需要改擴展名。
如果這分鐘內沒有日志輸出,則不新建文件。
RollingFileAppender獨有的選項
#指定日志文件的最大尺寸 MaxFileSize = 2KB #指定最大備份數為5 MaxBackupIndex = 5
最初的文件是error.log,達到指定的最大尺寸后,把這個文件重命名為error.log.1(擴展名后面加索引),再新建一個error.log來保存日志。
error.log達到最大尺寸后,把error.log.1重命名為error.log.2,把error.log重命名為error.log.1,再新建一個error.log來保存日志
.......
最多可有5個備份(1,2,3,4,5)。
有了5個備份,如果error.log達到了最大尺寸,把error.log.5刪除,將error.log.4重命名為error.log.5,error.log.3重命名為error.log.4......error.log重命名為error.log.1,再新建一個error.log來保存日志。
日志輸出格式
將日志以html代碼的形式輸出到指定文件中,將文件擴展名修改為.html即可查看效果:
級別 - 日志信息
DEBUG - This is debug message. INFO - This is info message. ERROR - This is error message.
自定義格式,和 C 語言的 printf() 差不多,都是使用占位符:
%m 代碼中指定的日志信息
%p 日志級別,DEBUG、INFO 等
%n 換行符
%c 打印語句所屬的類的全名
%t 產生該日志的線程全名
%d 服務器當前時間,可在后面指定格式,比如 %d{yyyy年MM月dd日 HH:mm:ss}
%l 日志時間發生的位置,包括類名、發生的線程,以及在代碼中的行數,如:Test.main(Test.java:10)
%F 日志消息產生時所在文件的文件名
%L 代碼所在行號
%% 輸出一個 %
可指定寬度、對齊方式:
%5p 寬度是5,字符個數小于5時,默認右對齊
%-5p 寬度是5,字符個數小于5時,左對齊
(3)src下新建測試類test.Log4jTest
package test; import org.apache.log4j.Logger; public class Log4jTest { public static void main(String[] args) { // 獲取當前類的Logger Logger logger = Logger.getLogger(Log4jTest.class); // 輸出DEBUG級別的日志,參數為日志信息 logger.debug("This is debug message."); // 輸出INFO級別的日志 logger.info("This is info message."); // 輸出ERROR級別的日志 logger.error("This is error message."); } }
說明
log4j可單獨使用,單獨使用時只需添加log4j.jar包。
如果要在其他框架中使用log4j,一般還要下載添加apache的commons-logging.jar。
因為log4j實現了記錄日志的功能,commons-logging.jar定義了日志接口,commons-logging本身并不具備記錄日志的功能,二者的關系是接口-實現類的關系,引入commons-logging.jar,使得框架與日志的耦合從類降到了接口。
附 log4j常用配置
### 日志記錄器Logger的全局設置 ### log4j.rootLogger = DEBUG,stdout,D,E ### 設置控制臺輸出 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 輸出DEBUG及以上級別的日志到文件 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File =D://log/debug/debug.log log4j.appender.D.Append = true log4j.appender.D.Threshold = ERROR log4j.appender.D.DatePattern='.'yyyy-MM-dd log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 輸出ERROR及以上級別的日志到文件 ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =D://log/error/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.DatePattern='.'yyyy-MM-dd log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
以上是“log4j有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。