2.日志
2.1概述【了解】
-
概述
程式中的日志可以用來記錄程式在運作的時候點點滴滴。并可以進行永久存儲。
- 日志與輸出語句的差別
輸出語句 | 日志技術 | |
取消日志 | 需要修改代碼,靈活性比較差 | 不需要修改代碼,靈活性比較好 |
輸出位置 | 隻能是控制台 | 可以将日志資訊寫入到檔案或者資料庫中 |
多線程 | 和業務代碼處于一個線程中 | 多線程方式記錄日志,不影響業務代碼的性能 |
2.2日志體系結構和Log4J【了解】
- 體系結構
-
Log4J
Log4j是Apache的一個開源項目。
通過使用Log4j,我們可以控制日志資訊輸送的目的地是控制台、檔案等位置。
我們也可以控制每一條日志的輸出格式。
通過定義每一條日志資訊的級别,我們能夠更加細緻地控制日志的生成過程。
最令人感興趣的就是,這些可以通過一個配置檔案來靈活地進行配置,而不需要修改應用的代碼。
-
Apache基金會
Apache軟體基金會(也就是Apache Software Foundation,簡稱為ASF),為支援開源軟體項目而辦的一個非盈利性組織。
2.3入門案例【應用】
- 使用步驟
- 導入log4j的相關jar包
- 編寫log4j配置檔案
- 在代碼中擷取日志的對象
- 按照級别設定記錄日志資訊
- 代碼示例
// log4j的配置檔案,名字為log4j.properties, 放在src根目錄下
log4j.rootLogger=debug,my,fileAppender
### direct log messages to my ###
log4j.appender.my=org.apache.log4j.ConsoleAppender
log4j.appender.my.ImmediateFlush = true
log4j.appender.my.Target=System.out
log4j.appender.my.layout=org.apache.log4j.PatternLayout
log4j.appender.my.layout.ConversionPattern=%d %t %5p %c{1}:%L - %m%n
# fileAppender��ʾ
log4j.appender.fileAppender=org.apache.log4j.FileAppender
log4j.appender.fileAppender.ImmediateFlush = true
log4j.appender.fileAppender.Append=true
log4j.appender.fileAppender.File=D:/log4j-log.log
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.ConversionPattern=%d %5p %c{1}:%L - %m%n
// 測試類
public class Log4JTest01 {
//使用log4j的api來擷取日志的對象
//弊端:如果以後我們更換日志的實作類,那麼下面的代碼就需要跟着改
//不推薦使用
//private static final Logger LOGGER = Logger.getLogger(Log4JTest01.class);
//使用slf4j裡面的api來擷取日志的對象
//好處:如果以後我們更換日志的實作類,那麼下面的代碼不需要跟着修改
//推薦使用
private static final Logger LOGGER = LoggerFactory.getLogger(Log4JTest01.class);
public static void main(String[] args) {
//1.導入jar包
//2.編寫配置檔案
//3.在代碼中擷取日志的對象
//4.按照日志級别設定日志資訊
LOGGER.debug("debug級别的日志");
LOGGER.info("info級别的日志");
LOGGER.warn("warn級别的日志");
LOGGER.error("error級别的日志");
}
}
2.4配置檔案詳解【了解】
- 三個核心
-
Loggers(記錄器) 日志的級别
Loggers元件在此系統中常見的五個級别:DEBUG、INFO、WARN、ERROR 和 FATAL。
DEBUG < INFO < WARN < ERROR < FATAL。
Log4j有一個規則:隻輸出級别不低于設定級别的日志資訊。
-
Appenders(輸出源) 日志要輸出的地方
把日志輸出到不同的地方,如控制台(Console)、檔案(Files)等。
- org.apache.log4j.ConsoleAppender(控制台)
- org.apache.log4j.FileAppender(檔案)
-
Layouts(布局) 日志輸出的格式
可以根據自己的喜好規定日志輸出的格式
常用的布局管理器:
org.apache.log4j.PatternLayout(可以靈活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志資訊的級别和資訊字元串)
org.apache.log4j.TTCCLayout(包含日志産生的時間、線程、類别等資訊)
- 配置根Logger
-
格式
log4j.rootLogger=日志級别,appenderName1,appenderName2,…
-
日志級别
OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定義的級别。
-
appenderName1
就是指定日志資訊要輸出到哪裡。可以同時指定多個輸出目的地,用逗号隔開。
例如:log4j.rootLogger=INFO,ca,fa
- ConsoleAppender常用的選項
-
ImmediateFlush=true
表示所有消息都會被立即輸出,設為false則不輸出,預設值是true。
-
Target=System.err
預設值是System.out。
- FileAppender常用的選項
-
ImmediateFlush=true
表示所有消息都會被立即輸出。設為false則不輸出,預設值是true
-
Append=false
true表示将消息添加到指定檔案中,原來的消息不覆寫。
false則将消息覆寫指定的檔案内容,預設值是true。
-
File=D:/logs/logging.log4j
指定消息輸出到logging.log4j檔案中
- PatternLayout常用的選項
-
ConversionPattern=%m%n
設定以怎樣的格式顯示消息
2.5在項目中的應用【應用】
- 步驟
- 導入相關的依賴
- 将資料中的properties配置檔案複制到src目錄下
- 在代碼中擷取日志的對象
- 按照級别設定記錄日志資訊