日誌技術(待更)
日誌技術與輸出語句的區別
思考一個問題
想清楚的知道系統的一些執行情況,該怎麼辦?
以前透過輸出語句列印
輸出語句的弊端
想取消記錄的資訊需要修改程式碼才可以完成。
資訊只能展示在控制檯,不能將其記錄到其他的位置(檔案,資料庫)
什麼是日誌
?
生活中的日誌
生活中的日誌就好比日記,可以記錄你生活的點點滴滴。
程式中的日誌
程式中的日誌可以用來記錄程式在執行的時候點點滴滴。並可以進行永久儲存。
日誌與輸出語句的區別
輸出語句
日誌技術
取消日誌
需要修改程式碼,靈活性比較差
不需要修改程式碼,靈活性比較好
輸出位置
只能是控制檯
可以將日誌資訊寫入到檔案或資料庫中
多執行緒
和業務程式碼處於一個執行緒中
多執行緒方式記錄日誌,不影響業務程式碼的效能
日誌技術體系結構
Log4j
Log4j是Apache的一個開源專案。
透過Log4j,我們可以控制日誌資訊輸送
目的地是控制檯還是檔案
等位置。
我們也可以
控制
每一條
日誌
的輸出
格式
。
透過
定義
每一條
日誌
資訊的
級別
,我們能夠更加細緻地控制日誌的生成過程。
最令人感興趣的就是,這些可以透過一個
配置檔案
來靈活地進行配置,而不需要修改應用的程式碼。
Log4j開發流程
匯入Log4j的相關jar包
編寫Log4j配置檔案
在程式碼中獲取日誌的物件
按照級別設定日誌資訊
下面是Log4j入門程式碼
前置條件
package
com。itheima。demo1
;
//import org。apache。log4j。Logger;
import
org。slf4j。Logger
;
import
org。slf4j。LoggerFactory
;
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級別的日誌”
);
}
}
Log4j組成
Loggers(記錄器)
日誌的級別
Appenders(輸出源)
日誌要輸出的地方
Layouts(佈局)
日誌輸出的格式
Loggers(記錄器)
Loggers元件在此係統中常見的五個級別:
DEBUG、INFO、WARN、ERROR和FATAL
。
級別關係:DEBUG < INFO < WARN < ERROR < FATAL
Log4j有一個規則:
只輸出級別不低於設定級別的日誌資訊
。
比如我在配置檔案中設定INFO這個級別,則高於INFO本身及高於INFO級別的日誌資訊會輸出,低於INFO級別的DEBUG則不會輸出。
Appenders(輸出源)
把日誌輸出到不同的地方,如控制檯(Console)、檔案(Files)等。
org。apache。log4j。ConsoleAppender(控制檯)
org。apache。log4j。FileAppender(檔案)
Layouts(佈局)
可以根據自己的喜好來規定日誌輸出的格式
常用的佈局管理器:
ori.apache.log4j.PatternLayout(可以靈活地指定佈局模式)
ori。apache。log4j。SimpleLayout(包含日誌資訊的級別和資訊字串)
ori。apache。log4j。TTCCLayout(包含日誌產生的時間、執行緒、類別等資訊)
配置檔案詳解
配置檔案