SpringBoot 篇 - 配置使用Logback進行日志記錄

SpringBoot框架內(nèi)部集成了LogBack日志肮蛹,默認使用LogBack的base.xml配置內(nèi)容來輸出日志到控制臺或文件之中崖媚。本文主要介紹如何使用Logback進行日志記錄。
1、在controller包下新增log相關(guān)類润匙,這里引用的日志包是org.slf4j包下的胧砰。
LogController 類:

package com.example.demo.controller;

import com.example.demo.helper.LogHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("log")
public class LogController {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @RequestMapping("writelog")
    public Object writeLog()
    {
        logger.debug("This is a debug message");
        logger.info("This is an info message");
        logger.warn("This is a warn message");
        logger.error("This is an error message");
        new LogHelper().helpMethod();
        return "OK";
    }
}

LogHelper 類:

package com.example.demo.helper;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogHelper {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    public void helpMethod(){
        logger.debug("This is a debug message");
        logger.info("This is an info message");
        logger.warn("This is a warn message");
        logger.error("This is an error message");
    }
}

這里一定要在pom文件中引入tomcat-embed-jasper相關(guān)包,詳細請參考:SpringBoot 篇 - 整合jsp
2、在瀏覽器中輸入http://localhost:8080/log/writelog 將會看到以下結(jié)果

image.png

控制臺輸出如下:
image.png

可以看到來自logback root logger的輸出信息奇徒。
但是可以注意到debug級別的日志沒有記錄下來雏亚,那是因為Spring Boot為Logback提供了默認的配置文件base.xml,另外Spring Boot 提供了兩個輸出端的配置文件console-appender.xml和file-appender.xml摩钙,base.xml引用了這兩個配置文件罢低。
image.png

以下是base.xml的內(nèi)容,可以看到胖笛,root logger的日志級別被重寫為Info級別网持,這就是上面例子中debug級別的日志沒有打印的原因。

<?xml version="1.0" encoding="UTF-8"?>
<included>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</included>

3匀钧、對Logback進行配置
方法一:在application.properties文件中對Logback進行配置

logging.file=log.log
logging.level.com.example.demo.controller = debug
logging.level.com.example.demo.helper = warn

配置記錄日志到log.log,com.example.demo.controller日志級別為debug,
com.example.demo.helper中日志級別為warn翎碑。看到以下結(jié)果之斯,按照配置的日志級別進行記錄日杈。


image.png

可以看到日志記錄到了log.log日志文件中。


image.png

方法二:通過額外的文件logback.xml配置Logback
在main/resources下新增 logback.xml文件佑刷,在logback.xml配置文件中莉擒,添加了控制臺輸出、文件每天輸出瘫絮、日志文件最大上限涨冀、輸出的日志都為debug級別,文件內(nèi)容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!-- 應(yīng)用名稱 -->
    <property name="APP_NAME" value="springboot" />
    <!--日志文件的保存路徑,首先查找系統(tǒng)屬性-Dlog.dir,如果存在就使用其;否則麦萤,在當(dāng)前目錄下創(chuàng)建名為logs目錄做日志存放的目錄 -->
    <property name="LOG_HOME" value="${log.dir:-logs}/" />
    <!-- 日志輸出格式 -->
    <property name="ENCODER_PATTERN"
        value="%d{HH:mm:ss.SSS} %-5level [%15.15thread] %logger{30} - %msg%n" />
    <contextName>${APP_NAME}</contextName>

    <!-- 控制臺日志:輸出全部日志到控制臺 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>${ENCODER_PATTERN}</Pattern>
        </encoder>
    </appender>

    <!-- 文件日志:輸出全部日志到文件 -->
    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${ENCODER_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 錯誤日志:用于將錯誤日志輸出到獨立文件 -->
    <appender name="ERROR_FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${ENCODER_PATTERN}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
        <appender-ref ref="ERROR_FILE" />
    </root>
</configuration>

控制臺輸出結(jié)果如下:


image.png

因為logback.xml中配置的./logs作為日志的輸出根目錄鹿鳖,所以LogBack自動在我們的項目根目錄下創(chuàng)建名叫做logs的文件夾,并且項目啟動時第一次記錄日志時會自動創(chuàng)建根據(jù)我們的命名方式的文件壮莹。


image.png

4翅帜、屏蔽某個包下的日志輸出
項目中需要屏蔽某個或者多個包下不輸出日志也不記錄日志到文件內(nèi),可以修改application.properties文件添加對應(yīng)配置:

logging.level.com.example.demo.controller = off

重啟運行命满,控制臺輸出如下涝滴,可以看到屏蔽了com.example.demo.controller 包下的日志打印。


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胶台,一起剝皮案震驚了整個濱河市歼疮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诈唬,老刑警劉巖韩脏,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異讯榕,居然都是意外死亡骤素,警方通過查閱死者的電腦和手機匙睹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來济竹,“玉大人痕檬,你說我怎么就攤上這事∷妥牵” “怎么了梦谜?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長袭景。 經(jīng)常有香客問我唁桩,道長,這世上最難降的妖魔是什么耸棒? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任荒澡,我火速辦了婚禮,結(jié)果婚禮上与殃,老公的妹妹穿的比我還像新娘单山。我一直安慰自己,他們只是感情好幅疼,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布米奸。 她就那樣靜靜地躺著,像睡著了一般爽篷。 火紅的嫁衣襯著肌膚如雪悴晰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天逐工,我揣著相機與錄音铡溪,去河邊找鬼。 笑死泪喊,一個胖子當(dāng)著我的面吹牛佃却,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窘俺,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼复凳!你這毒婦竟也來了瘤泪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤育八,失蹤者是張志新(化名)和其女友劉穎对途,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體髓棋,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡实檀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年惶洲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膳犹。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡恬吕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出须床,到底是詐尸還是另有隱情铐料,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布豺旬,位于F島的核電站钠惩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏族阅。R本人自食惡果不足惜篓跛,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坦刀。 院中可真熱鬧愧沟,春花似錦、人聲如沸求泰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渴频。三九已至芽丹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卜朗,已是汗流浹背拔第。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留场钉,地道東北人蚊俺。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像逛万,于是被迫代替她去往敵國和親泳猬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理宇植,服務(wù)發(fā)現(xiàn)得封,斷路器,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • 前言 今天來介紹下Spring Boot如何配置日志logback,我剛學(xué)習(xí)的時候指郁,是帶著下面幾個問題來查資料的 ...
    OzanShareing閱讀 1,041評論 0 2
  • 前言 今天來介紹下Spring Boot如何配置日志logback,我剛學(xué)習(xí)的時候忙上,是帶著下面幾個問題來查資料的,...
    嘟爺MD閱讀 3,101評論 1 26
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,778評論 6 342
  • 林七是我混網(wǎng)時候認識年齡相仿的女孩闲坎,她人好必須的疫粥。 你若折斷我閨蜜翅膀茬斧,我定毀你整個天堂。這句話應(yīng)該可以...
    蘇黎lanny閱讀 382評論 0 1