Spring Boot Logback 日志簡(jiǎn)單使用

源碼:https://github.com/yulc-coding/java-note/tree/master/logback

相關(guān)文章: Spring Boot Log4j2 日志簡(jiǎn)單使用

功能點(diǎn)

  • 按日志級(jí)別生成文件
  • 自定義生成日志文件:
    1. 定時(shí)任務(wù)等需要獨(dú)立分析的日志存放獨(dú)立文件
    2. 將指定包或者類的日志生成獨(dú)立的文件
  • 按日期生成文件
  • 設(shè)定日志文件大小
  • 設(shè)定日志文件過(guò)期時(shí)間

開始

  • Spring Boot 默認(rèn)使用了Logback作為日志框架根欧,所以不需要引入其他jar包
  • 在 src/main/resources 下新建XML文件 logback-spring.xml

基本結(jié)構(gòu)

<configuration>

  <!-- 定義變量  通過(guò) ${name} 來(lái)使用 -->
  <property name="", value =""></property>

  <!-- 日志相關(guān)配置 -->
  <appender></appender>

  <!-- 設(shè)置具體的打印,并引用appender -->
  <logger></logger>

 <!-- 功能同logger, 是所有l(wèi)ogger的上級(jí)節(jié)點(diǎn) -->
  <root></root>

</configuration>
property

配置自定義變量

<!-- 定義日志文件的存儲(chǔ)地址 -->
<property name="LOG_HOME" value="./logs"/>

<!-- 定義日志打印格式 -->
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{user}]-[%X{args}] [%thread] %-5level %logger{50} - %msg%n"/>
appender

日志的組件,name指定appender名稱耕肩,供<logger/> 和<root/> 引用。class指定appender的輸出方式

  1. ch.qos.logback.core.ConsoleAppender :
    在控制臺(tái)打印
    <!-- Console 控制臺(tái)輸出設(shè)置 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <withJansi>true</withJansi>
        <!-- 對(duì)日志進(jìn)行格式化 -->
        <encoder>
            <!-- 控制臺(tái)彩色打印 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %blue([%X{user}]-[%X{args}]) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{50}) - %cyan(%msg%n)</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
  1. ch.qos.logback.core.FileAppender :
    把日志添加到文件厨相,一直累加一個(gè)文件炼七,導(dǎo)致文件過(guò)大,查看不方便虱朵,不推薦使用

  2. ch.qos.logback.core.rolling.RollingFileAppender :
    滾動(dòng)記錄文件莉炉,先將日志記錄到指定文件,當(dāng)符合某個(gè)條件時(shí)卧秘,將日志記錄到其他文件呢袱,比如:超過(guò)單個(gè)文件設(shè)定的大小,按天歸檔日志

<!-- 定時(shí)任務(wù)類設(shè)置單獨(dú)日志文件 -->
    <appender name="SCHEDULE-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 當(dāng)前日志文件的名字 -->
        <File>${LOG_HOME}/schedule.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔日志文件輸出的文件名 -->
            <FileNamePattern>${LOG_HOME}/schedule.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <!-- 日志文件保留天數(shù) -->
            <MaxHistory>7</MaxHistory>
            <!-- 單個(gè)日志文件最大的大小 -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 對(duì)日志進(jìn)行格式化 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <!-- 打印INFO及以上日志-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

以上表示每天生成一個(gè)新的日志文件翅敌,單個(gè)文件超過(guò)5M生成一個(gè)新的文件羞福,保留最近7天的日志文件

logger

單獨(dú)日志打印:
name 屬性:
1蚯涮、name屬性和LoggerFactory.getLogger("schedule") 中的屬性一樣
2治专、name屬性為指定的包或者類路徑
level: 指定日志級(jí)別
additivity:內(nèi)容是否向上傳遞卖陵,如果為true,否則會(huì)同時(shí)顯示在root配置的認(rèn)日志中

    <!--這里的name和業(yè)務(wù)類中的getLogger中的字符串是一樣的-->
    <logger name="schedule" level="INFO" additivity="false">
        <appender-ref ref="SCHEDULE-APPENDER"/>
    </logger>
    <!-- org.ylc.note.logback.service 包下的所有日志獨(dú)立打印 (也可以指定到類上)-->
    <logger name="org.ylc.note.logback.service" level="INFO" additivity="false">
        <appender-ref ref="SERVICE-APPENDER"/>
    </logger>
root

根loger张峰,所有的 logger 的上級(jí)泪蔫,設(shè)置需要打印的日志組件


單元測(cè)試
@SpringBootTest
class LogbackApplicationTests {

    /**
     * 普通類日志
     */
    private final Logger normalLogger = LoggerFactory.getLogger(LogbackApplicationTests.class);

    /**
     * 定時(shí)任務(wù)類日志,這里的name必須和XML中l(wèi)ogger 的name一致喘批,這里為 schedule
     */
    private final Logger scheduleLogger = LoggerFactory.getLogger("schedule");

    @Autowired
    private MyService myService;

    /**
     * 普通日志測(cè)試
     */
    @Test
    void normalLogTest() {
        normalLogger.info("this is a info log with out args");
        normalLogger.error("this is a error log with out args");
    }

    /**
     * 帶參數(shù)的日志測(cè)試
     */
    @Test
    void argsLogTest() {
        MDC.put("user", "魚大仙");
        MDC.put("args", "參數(shù)");
        normalLogger.info("this is a info log with args");
        normalLogger.error("this is a error log with args");
    }

    /**
     * 獨(dú)立日志測(cè)試
     * 1撩荣、指定日志名稱
     * 2、指定包或者類
     */
    @Test
    void independentLogTest() {
        // 指定名稱
        scheduleLogger.info("this is a schedule info log");
        scheduleLogger.error("this is a schedule error log");
        // 指定包或者類
        myService.myLog();
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末饶深,一起剝皮案震驚了整個(gè)濱河市餐曹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敌厘,老刑警劉巖台猴,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異俱两,居然都是意外死亡饱狂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門宪彩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)休讳,“玉大人,你說(shuō)我怎么就攤上這事毯焕⊙苄龋” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵纳猫,是天一觀的道長(zhǎng)婆咸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)芜辕,這世上最難降的妖魔是什么尚骄? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮侵续,結(jié)果婚禮上倔丈,老公的妹妹穿的比我還像新娘。我一直安慰自己状蜗,他們只是感情好需五,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著轧坎,像睡著了一般宏邮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天蜜氨,我揣著相機(jī)與錄音械筛,去河邊找鬼。 笑死飒炎,一個(gè)胖子當(dāng)著我的面吹牛埋哟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播郎汪,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赤赊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了怒竿?” 一聲冷哼從身側(cè)響起砍鸠,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扩氢,失蹤者是張志新(化名)和其女友劉穎耕驰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體录豺,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朦肘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了双饥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媒抠。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖咏花,靈堂內(nèi)的尸體忽然破棺而出趴生,到底是詐尸還是另有隱情,我是刑警寧澤昏翰,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布苍匆,位于F島的核電站,受9級(jí)特大地震影響棚菊,放射性物質(zhì)發(fā)生泄漏浸踩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一统求、第九天 我趴在偏房一處隱蔽的房頂上張望检碗。 院中可真熱鬧,春花似錦码邻、人聲如沸折剃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怕犁。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間因苹,已是汗流浹背苟耻。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扶檐,地道東北人凶杖。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像款筑,于是被迫代替她去往敵國(guó)和親智蝠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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