Log4j學(xué)習(xí)

Log4j學(xué)習(xí)

之前一直有在用Log4f,但是沒有系統(tǒng)學(xué)習(xí)過,現(xiàn)在把這個(gè)系統(tǒng)地學(xué)習(xí)一下..

1.核心對象和支持對象
核心對象包括:Logger,Layout,Appender

Logger對象負(fù)責(zé)獲取日志信息,我理解的就是去獲取日志信息,就是用戶代碼里直接體現(xiàn)的
Layout提供了各種風(fēng)格格式化
Appender將信息發(fā)布到不同的地方去,比如控制臺或者其他地方

支持對象:Level,Filter,ObjectRenderer,LogManager

Level:定義了日志信息的粒度和優(yōu)先級:OFF气笙、DEBUG、INFO、ERROR彼妻、WARN饵隙、FATAL畏鼓、ALL
Filter:輔助Appender對象去過濾決定是否需要將日志信息發(fā)布到目的地
ObjectRenderer:ObjectRenderer 對象負(fù)責(zé)為傳入日志框架的不同對象提供字符串形式的表示,Layout 對象使用該對象來準(zhǔn)備最終的日志信息嘿悬。
LogManager:對象管理日志框架,它負(fù)責(zé)從系統(tǒng)級的配置文件或類中讀取初始配置參數(shù)锋爪。

2.Log4j用法示例

Log4j.properties文件是Log4j的配置文件,默認(rèn)情況下放到src目錄下即會自動(dòng)查找到

語法示例:

#定義輸出級別為DEBUG副硅,后面的那個(gè)為定義的輸出信息(包含輸出位置這些信息)
log4j.rootLogger=DEBUG,first

#定義輸出的目的地,控制臺
log4j.appender.first=org.apache.Log4j.ConsoleAppender

#定義輸出的格式,常用參數(shù)列表如下姥宝,下面的第一行感覺是為first的PatterLayout變量賦值,然后在下一行繼續(xù)去詳細(xì)定義
log4j.appender.first.layout=org.apace.Log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

配置參數(shù)詳解:

|參數(shù)|描述|實(shí)例|
|:---:|:---:|:----:|:---:|
|c|輸出Logger所在的類別(即Logger的名字)|%c將輸出完整的com.log4j.Log4jTest %c{1}將輸出Log4jTest 從右往左數(shù)的第n個(gè)
|C|輸出Logger所在類的名稱|%C(大寫的C),與上面的小寫的c的區(qū)別是,如果代碼是如下 private static Logger logger = Logger.getLogger(Object.class); 小寫的c會輸出Ojbect,大寫的C會輸出logger實(shí)際在哪個(gè)類進(jìn)行了日志輸出
|
|d|輸出日期格式化|%d{yyyy-MM-dd HH:mm:ss}
|F|輸出所在的類文件名稱|%F將輸出所在類的那個(gè)地方|
|l|輸出語句所在的行數(shù),包括類名,方法名,文件名,行數(shù)等|%l 將輸出詳細(xì)的log位置|
|L|輸出所在的行數(shù)|%L將輸出所在的行數(shù)
|p|輸出日志級別|DEBUG,INFO,ERROR
|M|輸出方法名|%M將輸出main,如果是在構(gòu)造方法里輸出日志,將是init
|m|表示輸出的日志,即message|%m
|n|換行|換行
|t|輸出當(dāng)前線程的名稱|%t
|%|%%用來輸出百分號|輸出百分號
|r|程序啟動(dòng)到日志輸出的時(shí)間間隔|%r

3.日志級別

ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
需要是大于某個(gè)級別的日志才會輸出

4.輸出目的地

ConsoleAppender
FileAppender
JDBCAppender
RollingFileAppender

5.日志格式

DateLayout
HTMLLAyout
PatternLayout 上面的示例用的是PatternLayout
SimpleLayout
XMLLAyout

6.FileAppender的一些參數(shù)
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
# 設(shè)置日志目的地
Log4j.appender.FILE=org.apache.Log4j.FileAppender
# 設(shè)置日志文件名
log4j.appender.FILE.File=${log}/log.out
#  設(shè)置日志輸出流是否每次都刷新到文件中去
log4j.appender.FILE.ImmediateFlush=true
# 設(shè)置appender對象的閥值想许,覆蓋初始化的那個(gè)閥值
log4j.appender.FILE.Threshold=debug
# 默認(rèn)是追加到文件的末尾伶授,這里false是指覆蓋
log4j.appender.FILE.Append=false
# 是否打開緩沖區(qū)讀寫
log4j.appender.FILE.BufferedIO=false
# 如果打開緩沖區(qū)讀寫,默認(rèn)的緩沖為8kb
log4j.appender.FILE.BufferSize=8KB
# 設(shè)置輸出格式
log4j.appender.FILE.layout=org.apache.Log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

ps:關(guān)于大小寫流纹,如果value那邊是一個(gè)類的話糜烹,左邊的key就是首字母小寫的駝峰命名,如果右邊是一個(gè)參數(shù)的話漱凝,可以就是首字母大些的駝峰命名

7.RollingFileAppender

RollingFileAppender繼承于FilaAppender疮蹦,有FileAppender的所有屬性,可以在日志文件大到一定閥值的情況下寫入另外一個(gè)文件

#設(shè)置單個(gè)文件的最大大小
log4j.appender.FILE.MaxFileSize=5KB
# 即設(shè)置保留的日志個(gè)數(shù)
log4j.appender.FILE.MaxBackupIndex=2
8.DailyRollingFileAppender

根據(jù)日期為分割輸出多個(gè)日志文件

#每天中午和午夜回滾文件茸炒,即一天回滾兩次
log4j.appender.FILE.DatePattern='.' yyyy-MM-dd-a

#每天午夜回滾文件
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
#以此類推愕乎,yyyy-MM最后一個(gè)即為回滾的最小單位
#根據(jù)地域每周的第一天回滾
log4j.appender.FILE.DatePattern='.'yyyy-ww
9.使用數(shù)據(jù)庫記錄日志

使用數(shù)據(jù)庫記錄日志之前需要新建對應(yīng)的數(shù)據(jù)庫和表

log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender
#設(shè)置緩沖區(qū)大小,就是夠多少條日志了執(zhí)行一次插入壁公,這里的DATABASE是自定義的
log4j.appender.DATABASE.BufferSize=1
#設(shè)置驅(qū)動(dòng)
log4j.appender.DATABASE.Driver=com.mysql.jdbc.Driver
#設(shè)置url
log4j.appender.DATABASE.URL=jdbc:mysql://localhost/DBNAME
#設(shè)置用戶名
log4j.appender.DATABASE.User=user_name
#設(shè)置密碼
log4j.appender.DATABASE.Password=password
#設(shè)置每次記錄日志觸發(fā)的sql感论,這里的x好像是os的用戶id
log4j.appender.DATABASE.sql=INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')

總結(jié)

使用log4j的配置文件如下:

1.定義rootLogger

log4j.rootLogger = ERROR,console
第一個(gè)是日志輸出等級,第二個(gè)即是我們自定義的輸出的位置

2.然后繼續(xù)去補(bǔ)充輸出位置的配置console的詳細(xì)信息

log4j.appender.console = org.apache.log4j.ConsoleAppender

3.配置該輸出位置的其他屬性

比如如果輸出目的地是數(shù)據(jù)庫的話紊册,需要配置驅(qū)動(dòng)等

4.配置輸出配置的格式

log4j.appender.console.layout = org.apache.log4j.PatternLayout

5.然后配置輸出格式的屬性

log4j.appender.console.layout = org.apache.log4j.PatternLayout

最后比肄,關(guān)于配置信息中的大小寫問題如下,我的總結(jié)如下:
關(guān)于大小寫,如果value那邊是一個(gè)類的話芳绩,左邊的key就是首字母小寫的駝峰命名掀亥,如果右邊是一個(gè)參數(shù)的話,可以就是首字母大些的駝峰命名

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妥色,一起剝皮案震驚了整個(gè)濱河市搪花,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘹害,老刑警劉巖撮竿,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吼拥,居然都是意外死亡倚聚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門凿可,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惑折,“玉大人,你說我怎么就攤上這事枯跑〔沂唬” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵敛助,是天一觀的道長粗卜。 經(jīng)常有香客問我,道長纳击,這世上最難降的妖魔是什么续扔? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮焕数,結(jié)果婚禮上纱昧,老公的妹妹穿的比我還像新娘。我一直安慰自己堡赔,他們只是感情好识脆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著善已,像睡著了一般灼捂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上换团,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天悉稠,我揣著相機(jī)與錄音,去河邊找鬼艘包。 笑死偎球,一個(gè)胖子當(dāng)著我的面吹牛洒扎,可吹牛的內(nèi)容都是我干的辑甜。 我是一名探鬼主播衰絮,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼磷醋!你這毒婦竟也來了猫牡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤邓线,失蹤者是張志新(化名)和其女友劉穎淌友,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骇陈,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡震庭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了你雌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片器联。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖婿崭,靈堂內(nèi)的尸體忽然破棺而出拨拓,到底是詐尸還是另有隱情,我是刑警寧澤氓栈,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布渣磷,位于F島的核電站,受9級特大地震影響授瘦,放射性物質(zhì)發(fā)生泄漏醋界。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一提完、第九天 我趴在偏房一處隱蔽的房頂上張望形纺。 院中可真熱鬧,春花似錦氯葬、人聲如沸挡篓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽官研。三九已至,卻和暖如春闯睹,著一層夾襖步出監(jiān)牢的瞬間戏羽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工楼吃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留始花,地道東北人妄讯。 一個(gè)月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像酷宵,于是被迫代替她去往敵國和親亥贸。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 在應(yīng)用程序中添加日志記錄總的來說基于三個(gè)目的:監(jiān)視代碼中變量的變化情況浇垦,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 5,008評論 1 13
  • 在應(yīng)用程序中添加日志記錄總的來說基于三個(gè)目的:監(jiān)視代碼中變量的變化情況炕置,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 4,975評論 0 6
  • 一、Log4j簡介 Log4j有三個(gè)主要的組件:Loggers(記錄器)男韧,Appenders (輸出源)和Layo...
    默默守護(hù)閱讀 1,902評論 2 8
  • from:https://www.cnblogs.com/ITtangtang/p/3926665.html一朴摊、L...
    enshunyan閱讀 3,282評論 0 0
  • Log4j 學(xué)習(xí) 介紹log4j是Apache的開源項(xiàng)目,是一個(gè)功能強(qiáng)大的日志組件,提供方便的日志記錄此虑。通過使用L...
    smile_leo閱讀 398評論 0 1