摘要:說明被用于日志輸出。配置文件使用之前需要在下新建一個(gè)配置文件。系統(tǒng)選擇配置文件的優(yōu)先級(jí)從先到后如下下的名為或者的文件下的名為的文件下名為或者的文件下名為的文件我們一般默認(rèn)使用進(jìn)行命名。
說明
log4j2被用于日志輸出。因?yàn)閯偨佑|log4j2,因此記個(gè)博客備用。
log4j2是一個(gè)日志框架,slf4j是日志框架接口,之所以使用log4j2和slf4j搭配使用是為了以后如果項(xiàng)目對(duì)日志有其它要求而需要更換日志框架時(shí)可以不改動(dòng)代碼,只需要把依賴的jar包換掉就可以了。
// log4j2依賴 log4j-api-2.8.2.jar log4j-core-2.8.2.jar // log4j2和slf4j橋接依賴 log4j-slf4j-impl-2.8.2.jar // slf4j依賴 slf4j-api-1.7.25.jar
注意,log4j依賴和橋接依賴的jar包版本最好保持一致。
配置文件使用log4j2之前需要在classpath下新建一個(gè)配置文件。需要注意的是log4j 2.x版本不再支持像1.x中的.properties后綴的文件配置方式,2.x版本配置文件后綴名只能為".xml",".json"或者".jsn"。
系統(tǒng)選擇配置文件的優(yōu)先級(jí)(從先到后)如下:
classpath下的名為log4j2-test.json 或者log4j2-test.jsn的文件
classpath下的名為log4j2-test.xml的文件
classpath下名為log4j2.json 或者log4j2.jsn的文件
classpath下名為log4j2.xml的文件
我們一般默認(rèn)使用log4j2.xml進(jìn)行命名。如果本地要測試,可以把log4j2-test.xml放到classpath,而正式環(huán)境使用log4j2.xml,則在打包部署的時(shí)候不要打包log4j2-test.xml即可。
默認(rèn)配置文件:
配置文件實(shí)例:
配置文件說明
1.根節(jié)點(diǎn)Configuration有兩個(gè)屬性:status和monitorinterval,有兩個(gè)子節(jié)點(diǎn):Appenders和Loggers(表明可以定義多個(gè)Appender和Logger).
status用來指定log4j本身的打印日志的級(jí)別.
monitorinterval用于指定log4j自動(dòng)重新配置的監(jiān)測間隔時(shí)間,單位是s,最小是5s.
2.Appenders節(jié)點(diǎn),常見的有三種子節(jié)點(diǎn):Console、RollingFile、File.
Console節(jié)點(diǎn)用來定義輸出到控制臺(tái)的Appender.
name:指定Appender的名字.
target:SYSTEM_OUT 或 SYSTEM_ERR,一般只設(shè)置默認(rèn):SYSTEM_OUT.
PatternLayout:輸出格式,不設(shè)置默認(rèn)為:%m%n.
File節(jié)點(diǎn)用來定義輸出到指定位置的文件的Appender.
name:指定Appender的名字.
fileName:指定輸出日志的目的文件帶全路徑的文件名.
PatternLayout:輸出格式,不設(shè)置默認(rèn)為:%m%n.
RollingFile節(jié)點(diǎn)用來定義超過指定大小自動(dòng)刪除舊的創(chuàng)建新的的Appender.
name:指定Appender的名字.
fileName:指定輸出日志的目的文件帶全路徑的文件名.
PatternLayout:輸出格式,不設(shè)置默認(rèn)為:%m%n.
filePattern:指定新建日志文件的名稱格式.
Policies:指定滾動(dòng)日志的策略,就是什么時(shí)候進(jìn)行新建日志文件輸出日志.
TimeBasedTriggeringPolicy:Policies子節(jié)點(diǎn),基于時(shí)間的滾動(dòng)策略,interval屬性用來指定多久滾動(dòng)一次,默認(rèn)是1hour。modulate=true用來調(diào)整時(shí)間:比如現(xiàn)在是早上3am,interval是4,那么第一次滾動(dòng)是在4am,接著是8am,12am...而不是7am.
SizeBasedTriggeringPolicy:Policies子節(jié)點(diǎn),基于指定文件大小的滾動(dòng)策略,size屬性用來定義每個(gè)日志文件的大小.
DefaultRolloverStrategy:用來指定同一個(gè)文件夾下最多有幾個(gè)日志文件時(shí)開始刪除最舊的,創(chuàng)建新的(通過max屬性)。
3.Loggers節(jié)點(diǎn),常見的有兩種:Root和Logger.
Root節(jié)點(diǎn)用來指定項(xiàng)目的根日志,如果沒有多帶帶指定Logger,那么就會(huì)默認(rèn)使用該Root日志輸出
level:日志輸出級(jí)別,共有8個(gè)級(jí)別,按照從低到高為:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
AppenderRef:Root的子節(jié)點(diǎn),用來指定該日志輸出到哪個(gè)Appender.
Logger節(jié)點(diǎn)用來多帶帶指定日志的形式,比如要為指定包下的class指定不同的日志級(jí)別等。
level:日志輸出級(jí)別,共有8個(gè)級(jí)別,按照從低到高為:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
name:用來指定該Logger所適用的類或者類所在的包全路徑,繼承自Root節(jié)點(diǎn).
AppenderRef:Logger的子節(jié)點(diǎn),用來指定該日志輸出到哪個(gè)Appender,如果沒有指定,就會(huì)默認(rèn)繼承自Root.如果指定了,那么會(huì)在指定的這個(gè)Appender和Root的Appender中都會(huì)輸出,此時(shí)我們可以設(shè)置Logger的additivity="false"只在自定義的Appender中進(jìn)行輸出。
輸出日志/** * */ package com.petro.test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @description 數(shù)據(jù)庫工具類 * @author PetterChen * @date 2017年10月14日 下午9:38:42 */ public class LogTest { /** * 日志輸出 */ private static Logger log = LoggerFactory.getLogger(LogTest.class); /** * @description 測試 * @date 2017年10月14日 下午9:38:42 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub log.trace("trace"); log.debug("debug"); log.warn("warn"); log.info("info"); log.error("error"); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70925.html
摘要:本文要來分享給大家程序員最常用的日志框架組件。沒有基礎(chǔ)的同學(xué)也不要著急,這套教程覆蓋了目前所有的日志框架,只要你學(xué),就一定用得到,先收藏,以備不時(shí)之需。 作為一名Java程序員,我們開發(fā)了很多Java應(yīng)用程序,包括桌面應(yīng)用、WEB應(yīng)用以及移動(dòng)應(yīng)用。然而日志系統(tǒng)是一個(gè)成熟Java應(yīng)用所必不可少的。在開發(fā)和調(diào)試階段,日志可以幫...
摘要:日志消息,是換行符如果使用作為日志配置文件,還要使用功能,會(huì)有以下錯(cuò)誤切換日志框架可以按照的日志適配圖,進(jìn)行相關(guān)的切換的方式切換為 三、日志 1、日志框架 小張;開發(fā)一個(gè)大型系統(tǒng); 1、System.out.println();將關(guān)鍵數(shù)據(jù)打印在控制臺(tái);去掉?寫在一個(gè)文件? 2、框架來記錄系統(tǒng)的一些運(yùn)行時(shí)信息;日志框架 ; zhanglogging.jar; 3、高大上的幾個(gè)功能?異步...
摘要:我們?yōu)樯兑萌罩咀畛跷覀冮_始接觸的時(shí)候,我們通常會(huì)使用將我們想要知道的信息打印到控制臺(tái)。為什么是默認(rèn)情況下,會(huì)用來記錄日志,并用級(jí)別輸出到控制臺(tái)。 我們?yōu)樯兑萌罩荆?最初我們開始接觸Java的時(shí)候,我們通常會(huì)使用System.out.println()將我們想要知道的信息打印到控制臺(tái)。但是,如果在服務(wù)器上我們?nèi)ミ\(yùn)行我們的Java程序,這個(gè)時(shí)候就凸顯了日志對(duì)于一個(gè)系統(tǒng)來說的重要性,查找...
摘要:方法會(huì)調(diào)即啟動(dòng)當(dāng)前的,一般就是,若返回為空,則調(diào)。若存在多個(gè)日志框架,則類加載的有多個(gè),所以是為載入。的方法會(huì)調(diào)用,若返回的大小超過,則警告。通過完成初始化,即實(shí)例化具體的賦值給內(nèi)部的,如。 SLF4J(Simple logging Facade for Java)是一個(gè)日志框架的適配器。如果一個(gè)項(xiàng)目已經(jīng)使用了log4j,而你加載了Apache Active MQ——它依賴于于另外一...
摘要:的橋接器這個(gè)橋接器將所有日志委派給的原生實(shí)現(xiàn),直接實(shí)現(xiàn)了的接口,因此使用與的搭配也暗示了嚴(yán)格的零內(nèi)存計(jì)算溢出未完待補(bǔ)充 起手式 忘了什么時(shí)候聽老師說過,牛逼的公司只管定義接口,屌絲廠商實(shí)現(xiàn)接口,類似 JDBC 的實(shí)現(xiàn)便是如此,用在 slf4j, 總覺得有些類似,本來 SUN 有機(jī)會(huì)在需求產(chǎn)生之前設(shè)計(jì)一套漂亮的日志框架來一統(tǒng)天下,可惜偏偏要拖到 JDK1.4, 而這套原生的日志框架也沒有...
閱讀 3171·2021-11-19 09:40
閱讀 3663·2021-11-16 11:52
閱讀 2988·2021-11-11 16:55
閱讀 3186·2019-08-30 15:55
閱讀 1191·2019-08-30 13:08
閱讀 1663·2019-08-29 17:03
閱讀 3020·2019-08-29 16:19
閱讀 2587·2019-08-29 13:43