log4j日志收集
目錄
- 1. log4j 是什么
- 1. 日志管理工具
- 2. 有哪些組成部分?
- 3. 日志級別
- 2. 輸出端與日志格式化器
- Appender(輸出端)
- Layout(日志格式化器)
- 3. log4j.properties
- 占位符,格式化日志
- 4. 使用
1. log4j 是什么
1. 日志管理工具
- log4j 是 Apache 的一個開源項目
(官網 http://jakarta.apache.org/log4j), - 通過在項目中使用 Log4J,我們可以控制日志信息輸出到控制臺、文件、GUI 組件、甚至是數據庫中。
- 我們可以控制每一條日志的輸出格式,通過定義日志的輸出級別, 可以更靈活的控制日志的輸出過程。方便項目的調試。
對應的slf4j,也是日志管理工具
一般將日志輸出到文件。或者將日志輸出到數據庫,做成對應的日志管理系統。
方便對程序分析,做出改正。
2. 有哪些組成部分?
log4j 主要由 Loggers (日志記錄器)、Appenders(輸出端)
和 Layout(日志格式化器)組成。
其中 Loggers 控制日志的輸出級別與日志是否輸出;
Appenders 指定日志的輸出方式(輸出到控制臺、文件等);
Layout 控制日志信息的輸出格式。
3. 日志級別
- OFF 最高日志級別,關閉所有日志
- FATAL 將會導致應用程序退出的錯誤
- ERROR 發生錯誤事件,但仍不影響系統的繼續運行
- WARN 警告,即潛在的錯誤情形
- INFO 一般和在粗粒度級別上,強調應用程序的運行全程
- DEBUG 一般用于細粒度級別上,對調試應用程序非常有幫助
- ALL 最低等級,打開所有日志記錄
- 一般只使用4個級別,優先級從高到低為 ERROR > WARN > INFO > DEBUG
- 注意,是error,只會記錄error級別及fatal, off的錯誤
2. 輸出端與日志格式化器
Appender(輸出端)
Appender 用來指定日志輸出到哪個地方,可以同時指定日志的輸出目的地。Log4j 常用的輸出目的地有以下幾種
ConsoleAppender 將日志輸出到控制臺
FileAppender 將日志輸出到文件中
DailyRollingFileAppender 將日志輸出到一個日志文件,并且每天輸出到一個新的文件
RollingFileAppender 將日志信息輸出到一個日志文件,并且指定文件的尺寸,當文件大 小達到指定尺寸時,會自動把文件改名,同時產生一個新的文件
JDBCAppender 把日志信息保存到數據庫中
Layout(日志格式化器)
HTMLLayout 格式化日志輸出為HTML表格形式
SimpleLayout 簡單的日志輸出格式化,打印的日志格式為(info - message)
PatternLayout 最強大的格式化期,可以根據自定義格式輸出日志,如果沒有指定轉換格式,就是用默認的轉換格式
3. log4j.properties
在d盤創建log文件夾,日志會自動輸出到log下
#總控制 日志級別 使用哪些方式輸出。 以error級別,只會logger.error(e)輸出 log4j.rootLogger = error,stdout,D,E,F#將日志輸出到控制臺 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\://logs/log.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] -[%l] %m%n #輸出至文件 級別 ERROR log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =D\://logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] -[%l] %m%n#輸出至html文件 log4j.appender.F=org.apache.log4j.DailyRollingFileAppender log4j.appender.F.layout=org.apache.log4j.HTMLLayout log4j.appender.F.File=D\:\\logs\\index.html log4j.appender.F.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] -[%l] %m%n占位符,格式化日志
%m 輸出代碼中指定的日志信息 %p 輸出優先級,及 DEBUG、INFO 等 %n 換行符(Windows平臺的換行符為 "\n",Unix 平臺為 "\n") %r 輸出自應用啟動到輸出該 log 信息耗費的毫秒數 %c 輸出打印語句所屬的類的全名 %t 輸出產生該日志的線程全名 %d 輸出服務器當前時間,默認格式為 ISO8601,也可以在后面指定格式。如:%d{yyyy年MM月dd日 HH:mm:ss} %l 輸出日志時間發生的位置,包括類名、發生的線程,以及在代碼中的行數,如:Test.main(Test.java:10) %F 輸出日志消息產生時所在的文件名稱 %L 輸出代碼中的行號 %x 輸出和當前線程相關的 NDC(嵌套診斷環境)4. 使用
private static Logger logger = Logger.getLogger(StudentController.class); @Controller public class AuthorAction extends BaseAction{// 日志對象private static Logger logger = Logger.getLogger(AuthorAction.class);private AuthorService authorService;@Autowiredpublic void setAuthorService(AuthorService authorService) {this.authorService = authorService;}//查詢所有書籍public String findAuthor(){logger.info("查詢所有書籍 start");try{List<Author> authorList = authorService.findAuthor();this.getRequest().setAttribute("authorList", authorList);SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");System.out.println("查詢所有書籍");int count = 1/0;} catch (Exception e) { // logger.info(e.getMessage()); // 記錄普通信息,程序運行過程 // logger.debug(e.getMessage()); // debug模式 // logger.warn(e.getMessage()); // 警告//logger.error(e.getStackTrace()); // 錯誤logger.error(e+"--"+e.getStackTrace()[0].getLineNumber()); // 錯誤類,對應的行號}logger.info("查詢所有書籍 end"); return "authorList";}}總結
- 上一篇: nacos服务配置中心演示
- 下一篇: 中文格式_常见中文编码格式