統(tǒng)一日志處理

統(tǒng)一日志處理

日志級(jí)別 ERROR 、WARN、INFO块请、DEBUG

  1. 設(shè)置控制臺(tái)輸出日志級(jí)別

    # 設(shè)置日志級(jí)別
    logging.level.root=WARN
    
  1. 把日志不僅輸出到控制臺(tái)娜氏,也可以輸出到文件中,使用日志工具

    第一步:刪除application.properties所有的日志配置
    第二步:在resources中創(chuàng)建logback-spring.xml墩新,看注解修改如下信息
     1. <property name="log.path" value="E:/xujc_msg/edu"/>
     2. <logger name="com.xujc" level="INFO"/>
    
    <!--logback-spring.xml-->
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration scan="true" scanPeriod="10 seconds">
        <!-- 日志級(jí)別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL贸弥,如果設(shè)置為WARN,則低于WARN的信息都不會(huì)輸出 -->
        <!-- scan:當(dāng)此屬性設(shè)置為true時(shí)海渊,配置文件如果發(fā)生改變绵疲,將會(huì)被重新加載,默認(rèn)值為true -->
        <!-- scanPeriod:設(shè)置監(jiān)測(cè)配置文件是否有修改的時(shí)間間隔臣疑,如果沒有給出時(shí)間單位盔憨,默認(rèn)單位是毫秒。當(dāng)scan為true時(shí)讯沈,此屬性生效郁岩。默認(rèn)的時(shí)間間隔為1分鐘。 -->
        <!-- debug:當(dāng)此屬性設(shè)置為true時(shí)缺狠,將打印出logback內(nèi)部日志信息问慎,實(shí)時(shí)查看logback運(yùn)行狀態(tài)。默認(rèn)值為false挤茄。 -->
    
        <contextName>logback</contextName>
        <!-- name的值是變量的名稱如叼,value的值時(shí)變量定義的值。通過定義的值會(huì)被插入到logger上下文中穷劈。定義變量后笼恰,可以使“${}”來(lái)使用變量。 -->
        <property name="log.path" value="E:/xujc_msg/edu"/>
    
        <!-- 彩色日志 -->
        <!-- 配置格式變量:CONSOLE_LOG_PATTERN 彩色日志格式 -->
        <!-- magenta:洋紅 -->
        <!-- boldMagenta:粗紅-->
        <!-- cyan:青色 -->
        <!-- white:白色 -->
        <!-- magenta:洋紅 -->
        <property name="CONSOLE_LOG_PATTERN"
                  value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>
    
    
        <!--輸出到控制臺(tái)-->
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <!--此日志appender是為開發(fā)使用歇终,只配置最底級(jí)別挖腰,控制臺(tái)輸出的日志級(jí)別是大于或等于此級(jí)別的日志信息-->
            <!-- 例如:如果此處配置了INFO級(jí)別,則后面其他位置即使配置了DEBUG級(jí)別的日志练湿,也不會(huì)被輸出 -->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
            </filter>
            <encoder>
                <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
                <!-- 設(shè)置字符集 -->
                <charset>UTF-8</charset>
            </encoder>
        </appender>
    
    
        <!--輸出到文件-->
    
        <!-- 時(shí)間滾動(dòng)輸出 level為 INFO 日志 -->
        <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在記錄的日志文件的路徑及文件名 -->
            <file>${log.path}/log_info.log</file>
            <!--日志文件輸出格式-->
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            <!-- 日志記錄器的滾動(dòng)策略猴仑,按日期,按大小記錄 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 每天日志歸檔路徑以及格式 -->
                <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <!--日志文件保留天數(shù)-->
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <!-- 此日志文件只記錄info級(jí)別的 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
        <!-- 時(shí)間滾動(dòng)輸出 level為 WARN 日志 -->
        <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在記錄的日志文件的路徑及文件名 -->
            <file>${log.path}/log_warn.log</file>
            <!--日志文件輸出格式-->
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
            </encoder>
            <!-- 日志記錄器的滾動(dòng)策略肥哎,按日期辽俗,按大小記錄 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <!--日志文件保留天數(shù)-->
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <!-- 此日志文件只記錄warn級(jí)別的 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>warn</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
    
        <!-- 時(shí)間滾動(dòng)輸出 level為 ERROR 日志 -->
        <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在記錄的日志文件的路徑及文件名 -->
            <file>${log.path}/log_error.log</file>
            <!--日志文件輸出格式-->
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
            </encoder>
            <!-- 日志記錄器的滾動(dòng)策略,按日期篡诽,按大小記錄 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <!--日志文件保留天數(shù)-->
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <!-- 此日志文件只記錄ERROR級(jí)別的 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
        <!--
            <logger>用來(lái)設(shè)置某一個(gè)包或者具體的某一個(gè)類的日志打印級(jí)別崖飘、以及指定<appender>。
            <logger>僅有一個(gè)name屬性杈女,
            一個(gè)可選的level和一個(gè)可選的addtivity屬性朱浴。
            name:用來(lái)指定受此logger約束的某一個(gè)包或者具體的某一個(gè)類吊圾。
            level:用來(lái)設(shè)置打印級(jí)別,大小寫無(wú)關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF翰蠢,
                  如果未設(shè)置此屬性项乒,那么當(dāng)前l(fā)ogger將會(huì)繼承上級(jí)的級(jí)別。
        -->
        <!--
            使用mybatis的時(shí)候梁沧,sql語(yǔ)句是debug下才會(huì)打印檀何,而這里我們只配置了info,所以想要查看sql語(yǔ)句的話廷支,有以下兩種操作:
            第一種把<root level="INFO">改成<root level="DEBUG">這樣就會(huì)打印sql频鉴,不過這樣日志那邊會(huì)出現(xiàn)很多其他消息
            第二種就是單獨(dú)給mapper下目錄配置DEBUG模式,代碼如下恋拍,這樣配置sql語(yǔ)句會(huì)打印垛孔,其他還是正常DEBUG級(jí)別:
         -->
        <!--開發(fā)環(huán)境:打印控制臺(tái)-->
        <springProfile name="dev">
            <!--可以輸出項(xiàng)目中的debug日志,包括mybatis的sql日志-->
            <logger name="com.xujc" level="INFO"/>
    
            <!--
                root節(jié)點(diǎn)是必選節(jié)點(diǎn)施敢,用來(lái)指定最基礎(chǔ)的日志輸出級(jí)別周荐,只有一個(gè)level屬性
                level:用來(lái)設(shè)置打印級(jí)別,大小寫無(wú)關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF悯姊,默認(rèn)是DEBUG
                可以包含零個(gè)或多個(gè)appender元素。
            -->
            <root level="INFO">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="INFO_FILE"/>
                <appender-ref ref="WARN_FILE"/>
                <appender-ref ref="ERROR_FILE"/>
            </root>
        </springProfile>
    
    
        <!--生產(chǎn)環(huán)境:輸出到文件-->
        <springProfile name="pro">
    
            <root level="INFO">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="DEBUG_FILE"/>
                <appender-ref ref="INFO_FILE"/>
                <appender-ref ref="ERROR_FILE"/>
                <appender-ref ref="WARN_FILE"/>
            </root>
        </springProfile>
    
    </configuration>
    
  2. 如果程序運(yùn)行出現(xiàn)異常贩毕,可以把異常信息輸出到文件中

  1. 添加注解@Slf4j
  2. log.error(e.getMessage());
@ControllerAdvice
@Slf4j
public class GlobalException {
    // 自定義異常處理
    @ExceptionHandler(XujcException.class)
    @ResponseBody
    public R error(XujcException e) {
        e.printStackTrace();
        log.error(e.getMessage());
        return R.error().code(e.getCode()).message(e.getMsg());
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末悯许,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子辉阶,更是在濱河造成了極大的恐慌先壕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谆甜,死亡現(xiàn)場(chǎng)離奇詭異垃僚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)规辱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門谆棺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人罕袋,你說(shuō)我怎么就攤上這事改淑。” “怎么了浴讯?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵朵夏,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我榆纽,道長(zhǎng)仰猖,這世上最難降的妖魔是什么捏肢? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮饥侵,結(jié)果婚禮上鸵赫,老公的妹妹穿的比我還像新娘。我一直安慰自己爆捞,他們只是感情好奉瘤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著煮甥,像睡著了一般盗温。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上成肘,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天卖局,我揣著相機(jī)與錄音,去河邊找鬼双霍。 笑死砚偶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洒闸。 我是一名探鬼主播染坯,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼丘逸!你這毒婦竟也來(lái)了单鹿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤深纲,失蹤者是張志新(化名)和其女友劉穎仲锄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湃鹊,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡儒喊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了币呵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怀愧。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖余赢,靈堂內(nèi)的尸體忽然破棺而出掸驱,到底是詐尸還是另有隱情,我是刑警寧澤没佑,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布毕贼,位于F島的核電站,受9級(jí)特大地震影響蛤奢,放射性物質(zhì)發(fā)生泄漏鬼癣。R本人自食惡果不足惜陶贼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望待秃。 院中可真熱鬧拜秧,春花似錦、人聲如沸章郁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)暖庄。三九已至聊替,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間培廓,已是汗流浹背惹悄。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肩钠,地道東北人泣港。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像价匠,于是被迫代替她去往敵國(guó)和親当纱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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