Logback日志框架

1宰掉、日志有什么用

日志是用來(lái)記錄追蹤程序在運(yùn)行過(guò)程中的信息的补君,我們可以利用日志很快定位問(wèn)題矿辽。

2竞膳、什么是Logback

Logback是由log4j創(chuàng)始人設(shè)計(jì)的又一個(gè)開(kāi)源日志組件

3、Logback的主要組成部分

Logback主要由三個(gè)模塊組成:

① logback-access
logback-access模塊與Servlet容器繼承齿诉,以提供HTTP訪問(wèn)日志功能筝野,我們可以使用logback-access來(lái)替換Tomcat的訪問(wèn)日志

② logback-classic
log4j的改良版,同時(shí)它提供了slf4j API粤剧,讓我們可以很方便的更換成其他日志系統(tǒng),如:log4j挥唠。(slf4j:即門(mén)面日志接口抵恋,提供了一套標(biāo)準(zhǔn)的日志功能接口,沒(méi)有具體實(shí)現(xiàn)宝磨,log4j弧关,logback都是slf4j的具體實(shí)現(xiàn))

③ logback-core
其他兩個(gè)模塊的基礎(chǔ)模塊

4、Logback主要標(biāo)簽

Logback主要用到的三個(gè)標(biāo)簽:

① logger

日志記錄器唤锉,用于存放日志對(duì)象世囊,定義日志的類型和級(jí)別等

② appender

用于指定日志輸出的目的地,也就是日志存放的媒介窿祥,這個(gè)媒介可以是控制臺(tái)株憾,可以是文件,也可以是遠(yuǎn)程套接字服務(wù)器

③ layout

用來(lái)格式化日志信息的輸出的

5晒衩、Logback的具體配置

1嗤瞎、引入logback依賴

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
</dependency>

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
</dependency>

2、創(chuàng)建logback配置文件logback.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!--
configuration是logback的根標(biāo)簽听系;
scan="true" 表示配置文件發(fā)生了改變會(huì)自動(dòng)加載贝奇;
scanPeriod="60 seconds" 檢測(cè)配置文件修改的時(shí)間間隔,默認(rèn)的單位是毫秒靠胜,這里我們?cè)O(shè)置的表示每分鐘檢測(cè)掉瞳;

debug="false" debug如果設(shè)置為true,表示我們會(huì)打印出logback自身實(shí)時(shí)的運(yùn)行信息浪漠,這里我們就不需要了陕习,
    因?yàn)閘ogback自身運(yùn)行時(shí)非常穩(wěn)定的,我們不需要對(duì)它做日志郑藏。
-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />

    <!--定義一些參數(shù)常量-->
    <!--定義日志的輸出位置-->
    <property name="log.filepath" value="log"/>

    <!--
    定義日志展示的格式
    %d{yyyy-MM-dd HH:mm:ss.SSS} 定義一條日志的展示時(shí)間
    [%thread] 表示執(zhí)行日志的線程名稱
    %-5level 我們空出5個(gè)空格衡查,然后顯示我們的日志級(jí)別
    %logger{100} 顯示我們?cè)倌膫€(gè)類(全限定類名)里面記錄的日志,后面的{100}表示這個(gè)類名展示的最大長(zhǎng)度是100
    %msg 表示我們的日志信息
    %n 表示換行
    -->
    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{100} %msg%n"/>

    <property name="stdlog.pattern" value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

    <!--定義日志輸出的媒介-->
    <!--定義控制臺(tái)輸出必盖,class指定的是我們具體輸出位置要使動(dòng)的類-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--appender負(fù)責(zé) 統(tǒng)一調(diào)度日志的輸出工作拌牲,而具體的日志的格式化工作和輸出的工作會(huì)交給encoder-->
        <encoder>
            <!--定義日志輸出的格式-->
            <pattern>${stdlog.pattern}</pattern>
        </encoder>
    </appender>

    <!--定義error級(jí)別的日志的appender俱饿,RollingFileAppender表示滾動(dòng)日志,我們可以按天或者按月來(lái)生成不同的日志文件-->
    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--文件路徑-->
        <file>log/tc-order-server.log</file>
        <!--定義滾動(dòng)策略,TimeBasedRollingPolicy是一個(gè)基于時(shí)間的滾動(dòng)策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--
            設(shè)置按每分鐘的方式來(lái)生成文件塌忽,如果我們的文件名是用.gz結(jié)尾的拍埠,那么logback會(huì)自動(dòng)幫我們壓縮日志文件,
            如果我們不需要壓縮土居,我們可以直接把.gz刪除就行了
            -->
            <fileNamePattern>log/tc-order-server-%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--設(shè)置文件最大保存的歷史數(shù)據(jù)枣购,這里就默認(rèn)30份就行了-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <!--定義日志格式-->
        <encoder>
            <!--定義日志輸出的格式-->
            <pattern>${log.pattern}</pattern>
        </encoder>
        <!--因?yàn)槲覀兊腞OLLING只需要記錄error級(jí)別的日志,對(duì)于其他的日志我們不需要擦耀,所以我們要加一個(gè)過(guò)濾器棉圈,對(duì)于其他級(jí)別的日志,直接過(guò)濾-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <!--如果是ERROR日志眷蜓,我們同意記錄-->
            <onMatch>ACCEPT</onMatch>
            <!--如果不是ERROR日志分瘾,我們直接忽略-->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--
    對(duì)于日志框架來(lái)說(shuō),日志是有級(jí)別的吁系,logback的日志級(jí)別有如下:
    trace(追蹤) < debug(調(diào)試) < info(記錄信息) < warn(警告) < error(錯(cuò)誤)

    配置我們自己寫(xiě)的代碼的日志記錄器
    name="com.vgxit.logback.kkdm" 表示對(duì)應(yīng)包(包含子包)里面的類中的代碼產(chǎn)生的日志才會(huì)被下面的日志記錄器記錄德召,否則不會(huì)
    level="DEBUG" 表示我們的日志記錄的級(jí)別是DEBUG,如果我們不指定level的時(shí)候汽纤,我們這個(gè)日志記錄器對(duì)應(yīng)的級(jí)別自動(dòng)繼承根記錄器
    additivity="true" 表示我們自定義的記錄器日志輸出
    -->
    <logger name="com.itc.order" level="DEBUG" additivity="true">
        <appender-ref ref="ROLLING"/>
    </logger>

    <!--根日志記錄器上岗,所有包下面的日志都會(huì)被記錄-->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>

6、過(guò)濾某個(gè)級(jí)別的日志

在對(duì)應(yīng)的appender標(biāo)簽中添加以下filter

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
</filter>

7蕴坪、補(bǔ)充肴掷,日志拆分,通過(guò)時(shí)間或大小

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辞嗡,一起剝皮案震驚了整個(gè)濱河市捆等,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌续室,老刑警劉巖栋烤,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異挺狰,居然都是意外死亡明郭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)丰泊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)薯定,“玉大人,你說(shuō)我怎么就攤上這事瞳购』爸叮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)年堆。 經(jīng)常有香客問(wèn)我吞杭,道長(zhǎng),這世上最難降的妖魔是什么变丧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任芽狗,我火速辦了婚禮,結(jié)果婚禮上痒蓬,老公的妹妹穿的比我還像新娘童擎。我一直安慰自己,他們只是感情好攻晒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布顾复。 她就那樣靜靜地躺著,像睡著了一般炎辨。 火紅的嫁衣襯著肌膚如雪捕透。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天碴萧,我揣著相機(jī)與錄音,去河邊找鬼末购。 笑死破喻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盟榴。 我是一名探鬼主播曹质,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼擎场!你這毒婦竟也來(lái)了羽德?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤迅办,失蹤者是張志新(化名)和其女友劉穎宅静,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體站欺,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姨夹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矾策。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磷账。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贾虽,靈堂內(nèi)的尸體忽然破棺而出逃糟,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布绰咽,位于F島的核電站菇肃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏剃诅。R本人自食惡果不足惜巷送,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矛辕。 院中可真熱鬧笑跛,春花似錦、人聲如沸聊品。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)翻屈。三九已至陈哑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伸眶,已是汗流浹背惊窖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厘贼,地道東北人界酒。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嘴秸,于是被迫代替她去往敵國(guó)和親毁欣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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