Logback日志

Logback日志


java版本:1.8


前言

在JAVA開(kāi)發(fā)中,我們會(huì)遇到各種各樣的bug蚪腋,怎么樣快速了解自己的bug,需要知道發(fā)生bug的地點(diǎn)時(shí)間以及其他關(guān)于bug的信息姨蟋。Logback就是一個(gè)非常好的滿足這些要求的工具屉凯。我會(huì)根據(jù)一些應(yīng)用場(chǎng)景來(lái)記錄一下使用方法。


官網(wǎng)

http://logback.qos.ch/index.html眼溶,和這官網(wǎng)有點(diǎn)寒酸簡(jiǎn)陋悠砚,我用下來(lái)只有日志報(bào)錯(cuò)時(shí),要查詢相關(guān)原因才會(huì)用的到一點(diǎn)堂飞。


依賴

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-core</artifactId>

<version>1.2.3</version>

</dependency>

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-classic</artifactId>

<version>1.2.3</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>1.7.30</version>

</dependency>


引用一下:https://www.cnblogs.com/ryelqy/p/10314147.html灌旧。


logback的配置介紹

Logger绑咱、appender及l(fā)ayout

  Logger作為日志的記錄器,把它關(guān)聯(lián)到應(yīng)用的對(duì)應(yīng)的context上后枢泰,主要用于存放日志對(duì)象描融,也可以定義日志類型、級(jí)別衡蚂×耍  Appender主要用于指定日志輸出的目的地,目的地可以是控制臺(tái)毛甲、文件年叮、遠(yuǎn)程套接字服務(wù)器、 MySQL玻募、PostreSQL只损、 Oracle和其他數(shù)據(jù)庫(kù)、 JMS和遠(yuǎn)程UNIX Syslog守護(hù)進(jìn)程等七咧。   Layout 負(fù)責(zé)把事件轉(zhuǎn)換成字符串跃惫,格式化的日志信息的輸出。


logger context

  各個(gè)logger 都被關(guān)聯(lián)到一個(gè) LoggerContext艾栋,LoggerContext負(fù)責(zé)制造logger辈挂,也負(fù)責(zé)以樹(shù)結(jié)構(gòu)排列各logger。其他所有l(wèi)ogger也通過(guò)org.slf4j.LoggerFactory 類的靜態(tài)方法getLogger取得裹粤。 getLogger方法以 logger名稱為參數(shù)终蒂。用同一名字調(diào)用LoggerFactory.getLogger 方法所得到的永遠(yuǎn)都是同一個(gè)logger對(duì)象的引用。


有效級(jí)別及級(jí)別的繼承

  Logger 可以被分配級(jí)別遥诉。級(jí)別包括:TRACE拇泣、DEBUG、INFO矮锈、WARN 和 ERROR霉翔,定義于ch.qos.logback.classic.Level類。如果 logger沒(méi)有被分配級(jí)別苞笨,那么它將從有被分配級(jí)別的最近的祖先那里繼承級(jí)別债朵。root logger 默認(rèn)級(jí)別是 DEBUG。


打印方法與基本的選擇規(guī)則

  打印方法決定記錄請(qǐng)求的級(jí)別瀑凝。例如序芦,如果 L 是一個(gè) logger 實(shí)例,那么粤咪,語(yǔ)句 L.info("..")是一條級(jí)別為 INFO的記錄語(yǔ)句模闲。記錄請(qǐng)求的級(jí)別在高于或等于其 logger 的有效級(jí)別時(shí)被稱為被啟用劝术,否則墓陈,稱為被禁用。記錄請(qǐng)求級(jí)別為 p磁奖,其 logger的有效級(jí)別為 q,只有則當(dāng) p>=q時(shí)某筐,該請(qǐng)求才會(huì)被執(zhí)行比搭。該規(guī)則是 logback 的核心。級(jí)別排序?yàn)椋?TRACE < DEBUG < INFO < WARN < ERROR


系統(tǒng)找尋logback配置文件規(guī)則

嘗試在 classpath下查找文件logback-test.xml南誊;

如果文件不存在敢辩,則查找文件logback.xml;

如果兩個(gè)文件都不存在弟疆,logback用BasicConfigurator自動(dòng)對(duì)自己進(jìn)行配置,這會(huì)導(dǎo)致記錄輸出到控制臺(tái)盗冷。

其實(shí)怠苔,這些順序在日志里也能打印出來(lái),自己看就行仪糖。


logback配置文件

首先柑司,我們希望在控制臺(tái)打印日志。

<?xmlversion="1.0"encoding="UTF-8"?>

<!--

ExampleLOGBACKConfigurationFile

http://logback.qos.ch/manual/configuration.html

-->

<configuration>

<appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender">

<encoder>

<pattern>%d{yyyy-MM-ddHH:mm:ss.SSS} [%thread]%-5level%logger{35}%L-%msg%n</pattern>

</encoder>

</appender>

<rootlevel="DEBUG">

? ? ? ? <appender-refref="STDOUT"/>

</root>

</configuration>


<configuration>根節(jié)點(diǎn)

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">指明了Appender名稱以及它發(fā)送的日志地址知控制臺(tái)锅劝。

<encoder>解碼器

<pattern>指明了日志輸出格式攒驰,具體語(yǔ)言規(guī)范網(wǎng)上有。

<root level="DEBUG">指明跟級(jí)別的日志指能輸出Degub以上級(jí)別的日志故爵。

<appender-ref ref="STDOUT" />指明系統(tǒng)要用名為STDOUT的日志打印玻粪。


我們還希望能在一些文件中打印日志。


<appendername="FILE"class="ch.qos.logback.core.FileAppender">

<file>testFile.log</file>

<append>true</append>

<encoder>

<pattern>%d{HH:mm:ss.SSS} [%thread]%-5level%logger{35}-%msg%n</pattern>

</encoder>

</appender>

<file>文件名

<append>true</append>加日志诬垂,歷史日志保留劲室。

我還希望能按包把日志按照不同級(jí)別打印到不同文件里。

<loggername="mybatis.mysql.without.spring"level="info">

<appender-refref="STDOUT"/>

</logger>

<loggername="mybatis.mysql.without.spring.service"level="info">

<appender-refref="STDOUT"/>

</logger>


<logger name="mybatis.mysql.without.spring" level="info">指明了包的地址以及設(shè)置的日志等級(jí)结窘。由于是info很洋,所以沒(méi)有dubug與trace。

由于這兩個(gè)包是從屬關(guān)系隧枫,所以service包內(nèi)的日志會(huì)被打印兩遍喉磁。


我們還可以按照日志等級(jí)不同打印到不同文件中,并且按時(shí)清空日志文件官脓。

<appendername="FILE-DEBUG"class="ch.qos.logback.core.rolling.RollingFileAppender">

<file>/logback/log/test-debug.log</file>

<rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<fileNamePattern>/logs/test-debug-%d{yyyy-MM-dd}.log</fileNamePattern>

<maxHistory>30</maxHistory>

</rollingPolicy>

<encoder>

<pattern>%d{HH:mm:ss.SSS} [%thread]%-5level%logger{35}-%msg%n</pattern>

</encoder>

<!--filter過(guò)濾器协怒,DEBUG-->

<filterclass="ch.qos.logback.classic.filter.LevelFilter">

<level>DEBUG</level>

<onMatch>ACCEPT</onMatch>

<onMismatch>DENY</onMismatch>

</filter>

</appender>


<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">是個(gè)按時(shí)清空滾動(dòng)日志的功能。這里是設(shè)定每30天清空卑笨。

<filter class="ch.qos.logback.classic.filter.LevelFilter">設(shè)定按照的日志等級(jí)斤讥。這里是debug。


如果我們配置文件不直接在resources下(系統(tǒng)默認(rèn)地址),而是在別的地方芭商,我們也有方法手動(dòng)定位到Logback.xml配置文件派草。

public class Main{

private static final Loggerlogger = LoggerFactory.getLogger(Main.class);

public static void main(String[]args)throws IOException, JoranException{

LoggerContext lc=(LoggerContext)LoggerFactory.getILoggerFactory();

JoranConfigurator configurator=new JoranConfigurator();

configurator.setContext(lc);

lc.reset();

try{

configurator.doConfigure("src/main/resources/log/logback.xml");

}catch(JoranExceptione) {

e.printStackTrace();

? ? ?? }

StatusPrinter.printInCaseOfErrorsOrWarnings(lc);

System.out.println("===================");

logger.debug("Hello {}","debug message");

TestEntitytest Entity=new TestEntity();

testEntity.setCreateTime(newDate());

testEntity.setModifyTime(newDate());

testEntity.setContent("我是2");

System.out.println(testEntity);

logger.debug("debug");

logger.info("info");

logger.warn("warn");

logger.error("error");

Service service=new Service();

service.insert(testEntity);

System.out.println("ok");

?? }

}


LoggerContext把許多l(xiāng)ogback-classic組件基于一身,可以用于跟蹤配置文件铛楣。

JoranConfigurator增加了與logback-classic有關(guān)的功能近迁。

setContext更新context。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載簸州,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者鉴竭。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市岸浑,隨后出現(xiàn)的幾起案子搏存,更是在濱河造成了極大的恐慌,老刑警劉巖矢洲,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件璧眠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡读虏,警方通過(guò)查閱死者的電腦和手機(jī)责静,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盖桥,“玉大人灾螃,你說(shuō)我怎么就攤上這事】玻” “怎么了腰鬼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)塑荒。 經(jīng)常有香客問(wèn)我垃喊,道長(zhǎng),這世上最難降的妖魔是什么袜炕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任本谜,我火速辦了婚禮,結(jié)果婚禮上偎窘,老公的妹妹穿的比我還像新娘乌助。我一直安慰自己,他們只是感情好陌知,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布他托。 她就那樣靜靜地躺著,像睡著了一般仆葡。 火紅的嫁衣襯著肌膚如雪赏参。 梳的紋絲不亂的頭發(fā)上志笼,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音把篓,去河邊找鬼纫溃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛韧掩,可吹牛的內(nèi)容都是我干的紊浩。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼疗锐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼坊谁!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起滑臊,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤口芍,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后雇卷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鬓椭,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年聋庵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芙粱。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡祭玉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出春畔,到底是詐尸還是另有隱情脱货,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布律姨,位于F島的核電站振峻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏择份。R本人自食惡果不足惜扣孟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荣赶。 院中可真熱鬧凤价,春花似錦、人聲如沸拔创。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剩燥。三九已至慢逾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侣滩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工口注, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胜卤。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓疆导,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親葛躏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子澈段,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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