SpringBoot日志框架logback

  • 簡(jiǎn)單日志配置
  • logback的介紹及配置
  • logback的使用
  • logback.xml配置示例
一.簡(jiǎn)單日志配置

spring boot內(nèi)部使用Commons Logging來(lái)記錄日志埃跷,但也保留外部接口可以讓一些日志框架來(lái)進(jìn)行實(shí)現(xiàn),例如Java Util Logging,Log4J2還有Logback温学。如果你想用某一種日志框架來(lái)進(jìn)行實(shí)現(xiàn)的話,就必須先配置,默認(rèn)情況下系馆,spring boot使用Logback作為日志實(shí)現(xiàn)的框架像鸡。

1.1 配置控制臺(tái)日志的debug級(jí)別
默認(rèn)情況下粉渠,spring boot從控制臺(tái)打印出來(lái)的日志級(jí)別只有ERROR, WARN 還有INFO原押,如果你想要打印debug級(jí)別的日志胁镐,可以通過application.properites配置debug=true

1.2 在生產(chǎn)環(huán)境環(huán)境下,你可以通過命令行進(jìn)行配置日志的debug級(jí)別
java -jar C:\Users\Administrator\app\xx\demo.jar --debug

1.3 配置logging.level.*來(lái)具體輸出哪些包的日志級(jí)別
logging.level.root=INFO
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

1.4 將日志輸出到文件中
默認(rèn)情況下spring boot是不將日志輸出到日志文件中,但你可以通過在application.properites文件中配置logging.file文件名稱和logging.path文件路徑希停,將日志輸出到文件中
logging.path=F:\demo
logging.file=demo.log
logging.level.root=info

這里需要注意幾點(diǎn):
這里若不配置具體的包的日志級(jí)別烁巫,日志文件信息將為空
若只配置logging.path,那么將會(huì)在F:\demo文件夾生成一個(gè)日志文件為spring.log(該文件名是固定的宠能,不能更改)。如果path路徑不存在磁餐,會(huì)自動(dòng)創(chuàng)建該文件夾
若只配置logging.file违崇,那將會(huì)在項(xiàng)目的當(dāng)前路徑下生成一個(gè)demo.log日志文件。這里可以使用絕對(duì)路徑如诊霹,會(huì)自動(dòng)在e盤下創(chuàng)建文件夾和相應(yīng)的日志文件羞延。
logging.file=E:\demo\demo.log

logging.path和logging.file同時(shí)配置,不會(huì)在這個(gè)路徑有F:\demo\demo.log日志生成脾还,logging.path和logging.file不會(huì)進(jìn)行疊加(要注意)
logging.path和logging.file的value都可以是相對(duì)路徑或者絕對(duì)路徑
這就是基礎(chǔ)的日志配置伴箩,可以直接在application.properties配置,我們還可以在classpath路徑下鄙漏,通過定義具體的日志文件來(lái)配置——logback.xml

二. logback的介紹及配置

Logback是由log4j創(chuàng)始人設(shè)計(jì)的又一個(gè)開源日志組件嗤谚。logback當(dāng)前分成三個(gè)模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個(gè)模塊的基礎(chǔ)模塊怔蚌。logback-classic是log4j的一個(gè) 改良版本巩步。此外logback-classic完整實(shí)現(xiàn)SLF4J API使你可以很方便地更換成其它日志系統(tǒng)如log4j或JDK14 Logging。logback-access訪問模塊與Servlet容器集成提供通過Http來(lái)訪問日志的功能桦踊。 Logback是要與SLF4J結(jié)合起來(lái)用兩個(gè)組件的官方網(wǎng)站如下:
點(diǎn)擊查看——>logback的官方網(wǎng)站
點(diǎn)擊查看——> SLF4J的官方網(wǎng)站

maven配置

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

Logback優(yōu)點(diǎn)
Logback和log4j是非常相似的椅野,如果你對(duì)log4j很熟悉,那對(duì)logback很快就會(huì)得心應(yīng)手籍胯。下面列了logback相對(duì)于log4j的一些優(yōu)點(diǎn):

1.更快的實(shí)現(xiàn) Logback的內(nèi)核重寫了竟闪,在一些關(guān)鍵執(zhí)行路徑上性能提升10倍以上。而且logback不僅性能提升了杖狼,初始化內(nèi)存加載也更小了炼蛤。

2、非常充分的測(cè)試 Logback經(jīng)過了幾年本刽,數(shù)不清小時(shí)的測(cè)試鲸湃。Logback的測(cè)試完全不同級(jí)別的。在作者的觀點(diǎn)子寓,這是簡(jiǎn)單重要的原因選擇logback而不是log4j暗挑。

3、 Logback-classic實(shí)現(xiàn)了 SLF4j 在使用SLF4j中斜友,你都感覺不到logback-classic炸裆。而且因?yàn)閘ogback-classic非常自然地實(shí)現(xiàn)了SLF4J, 所 以切換到log4j或者其他鲜屏,非常容易烹看,只需要提供成另一個(gè)jar包就OK国拇,根本不需要去動(dòng)那些通過SLF4JAPI實(shí)現(xiàn)的代碼。

4惯殊、自動(dòng)重新加載配置文件 當(dāng)配置文件修改了酱吝,Logback-classic能自動(dòng)重新加載配置文件。掃描過程快且安全土思,它并不需要另外創(chuàng)建一個(gè)掃描線程务热。這個(gè)技術(shù)充分保證了應(yīng)用程序能跑得很歡在JEE環(huán)境里面。

5己儒、配置文件可以處理不同的情況 開發(fā)人員經(jīng)常需要判斷不同的Logback配置文件在不同的環(huán)境下(開發(fā)崎岂,測(cè)試,生產(chǎn))闪湾。而這些配置文件僅僅只有一些很小的不同冲甘,可以通過,和來(lái)實(shí)現(xiàn),這樣一個(gè)配置文件就可以適應(yīng)多個(gè)環(huán)境途样。

6江醇、Filters(過濾器) 有些時(shí)候,需要診斷一個(gè)問題娘纷,需要打出日志嫁审。在log4j,只有降低日志級(jí)別赖晶,不過這樣會(huì)打出大量的日志律适,會(huì)影響應(yīng)用性能。在Logback遏插,你可以繼續(xù) 保持那個(gè)日志級(jí)別而除掉某種特殊情況捂贿,如alice這個(gè)用戶登錄,她的日志將打在DEBUG級(jí)別而其他用戶可以繼續(xù)打在WARN級(jí)別胳嘲。要實(shí)現(xiàn)這個(gè)功能只需 加4行XML配置厂僧。可以參考MDCFIlter 了牛。

7颜屠、SiftingAppender(一個(gè)非常多功能的Appender) 它可以用來(lái)分割日志文件根據(jù)任何一個(gè)給定的運(yùn)行參數(shù)。如鹰祸,SiftingAppender能夠區(qū)別日志事件跟進(jìn)用戶的Session甫窟,然后每個(gè)用戶會(huì)有一個(gè)日志文件。

8蛙婴、自動(dòng)壓縮已經(jīng)打出來(lái)的log RollingFileAppender在產(chǎn)生新文件的時(shí)候粗井,會(huì)自動(dòng)壓縮已經(jīng)打出來(lái)的日志文件。壓縮是個(gè)異步過程,所以甚至對(duì)于大的日志文件浇衬,在壓縮過程中應(yīng)用不會(huì)受任何影響懒构。

9、堆棧樹帶有包版本 Logback在打出堆棧樹日志時(shí)耘擂,會(huì)帶上包的數(shù)據(jù)胆剧。

10、自動(dòng)去除舊的日志文件 通過設(shè)置TimeBasedRollingPolicy或者SizeAndTimeBasedFNATP的maxHistory屬性梳星,你可以控制已經(jīng)產(chǎn)生日志文件的最大數(shù)量赞赖。如果設(shè)置maxHistory 12,那那些log文件超過12個(gè)月的都會(huì)被自動(dòng)移除冤灾。

2.3 Logback的配置介紹

1、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)換成字符串,格式化的日志信息的輸出贤壁。

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

3、有效級(jí)別及級(jí)別的繼承
Logger 可以被分配級(jí)別包帚。級(jí)別包括:TRACE乘客、DEBUG、INFO团秽、WARN 和 ERROR,定義于 ch.qos.logback.classic.Level類拘哨。如果 logger沒有被分配級(jí)別,那么它將從有被分配級(jí)別的最近的祖先那里繼承級(jí)別信峻。root logger 默認(rèn)級(jí)別是 DEBUG倦青。

4、打印方法與基本的選擇規(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

三黍翎、Logback的使用

Logback使用介紹:

一、<configuration>:Logback配置根元素
屬性包括:
1,scan: 當(dāng)此屬性設(shè)置為true時(shí)艳丛,配置文件如果發(fā)生改變匣掸,將會(huì)被重新加載,默認(rèn)值為true质礼。
2,scanPeriod: 設(shè)置監(jiān)測(cè)配置文件是否有修改的時(shí)間間隔旺聚,如果沒有給出時(shí)間單位,默認(rèn)單位是毫秒眶蕉。當(dāng)scan為true時(shí)砰粹,此屬性生效。默認(rèn)的時(shí)間間隔為1分鐘造挽。
3,debug: 當(dāng)此屬性設(shè)置為true時(shí)碱璃,將打印出logback內(nèi)部日志信息,實(shí)時(shí)查看logback運(yùn)行狀態(tài)饭入。默認(rèn)值為false嵌器。
子元素:
<contextName>:上下文名字;
<property>:定義屬性谐丢,可以使用${}在配置文件中使用爽航;
二蚓让,<appender>:在logback中是用于具體記錄日志的組件,可以用來(lái)配置日志記錄方式讥珍,日志記錄格式等历极;
屬性包括:
name:appender的名字,用于下面在配置日志的時(shí)候指定衷佃;
class:使用到的appender類趟卸;
常見的appender:
1,ch.qos.logback.core.ConsoleAppender:輸出到控制臺(tái)氏义;
2锄列,ch.qos.logback.core.FileAppender:輸出到文件;
3惯悠,ch.qos.logback.core.rolling.RollingFileAppender:輸出到文件邻邮,可以配置滾動(dòng)策略,當(dāng)日志達(dá)到某個(gè)條件之后分文件記錄克婶;
4饶囚,還有其他的appender,比如寫到數(shù)據(jù)庫(kù)等鸠补;
<appender>元素的基本格式:
<appender name="" class="">
<encoder>
<pattern>...</pattern>
</encoder>
<otherconfig></otherconfig>
</appender>
<encoder>元素用來(lái)規(guī)定日志的輸出格式,所有表達(dá)式都以%開始表示接下來(lái)是一個(gè)特殊標(biāo)識(shí)符
常見標(biāo)識(shí)符:
1嘀掸,%logger{n}:輸出Logger對(duì)象類名紫岩,n代表長(zhǎng)度;
2睬塌,%class{n}:輸出所在類名泉蝌,
3,d{pattern}或者date{pattern}:輸出日志日期揩晴,格式同java勋陪;
4,L/line:日志所在行號(hào)硫兰;
5诅愚,m/msg:日志內(nèi)容;
6劫映,method:所在方法名稱违孝;
7,p/level:日志級(jí)別泳赋;
8雌桑,thread:所在線程名稱;

3.1 Logback的默認(rèn)配置
如果配置文件 logback-test.xml 和 logback.xml 都不存在祖今,那么 logback 默認(rèn)地會(huì)調(diào)用BasicConfigurator 校坑,創(chuàng)建一個(gè)最小化配置拣技。最小化配置由一個(gè)關(guān)聯(lián)到根 logger 的ConsoleAppender 組成。輸出用模式為%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 的 PatternLayoutEncoder 進(jìn)行格式化耍目。root logger 默認(rèn)級(jí)別是 DEBUG膏斤。

1、Logback的配置文件
Logback 配置文件的語(yǔ)法非常靈活制妄。正因?yàn)殪`活掸绞,所以無(wú)法用 DTD 或 XML schema 進(jìn)行定義。盡管如此耕捞,可以這樣描述配置文件的基本結(jié)構(gòu):以<configuration>開頭衔掸,后面有零個(gè)或多個(gè)<appender>元素,有零個(gè)或多個(gè)<logger>元素俺抽,有最多一個(gè)<root>元素敞映。

2、Logback默認(rèn)配置的步驟

(1). 嘗試在 classpath 下查找文件 logback-test.xml磷斧;
(2). 如果文件不存在振愿,則查找文件 logback.xml;
(3). 如果兩個(gè)文件都不存在弛饭,logback 用 Bas icConfigurator 自動(dòng)對(duì)自己進(jìn)行配置冕末,這會(huì)導(dǎo)致記錄輸出到控制臺(tái)。

3侣颂、logback-spring.xml 文件

springboot默認(rèn)支持logback.xml或者logback-spring.xml档桃,推薦使用logback-spring.xml,springboot會(huì)增加額外功能憔晒;

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定義日志文件的存儲(chǔ)地址 勿在 LogBack 的配置中使用相對(duì)路徑-->  
    <property name="LOG_PATH" value="/path" />  
    <!-- 控制臺(tái)輸出 -->   
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
             <!--格式化輸出:%d表示日期藻肄,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息拒担,%n是換行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>   
        </encoder> 
    </appender>
    <!-- 按照每天生成日志文件 -->   
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">   
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件輸出的文件名-->
            <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern> 
            <!--日志文件保留天數(shù)-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>   
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
            <!--格式化輸出:%d表示日期嘹屯,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息从撼,%n是換行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>   
        </encoder> 
        <!--日志文件最大的大小-->
       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
         <MaxFileSize>10MB</MaxFileSize>
       </triggeringPolicy>
    </appender> 
   <!-- show parameters for hibernate sql 專為 Hibernate 定制 --> 
    <logger name="org.hibernate.type.descriptor.sql.BasicBinder"  level="TRACE" />  
    <logger name="org.hibernate.type.descriptor.sql.BasicExtractor"  level="DEBUG" />  
    <logger name="org.hibernate.SQL" level="DEBUG" />  
    <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
    <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />  
    
    <!--myibatis log configure--> 
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="java.sql.Statement" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    
    <!-- 日志輸出級(jí)別 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root> 
     <!--日志異步到數(shù)據(jù)庫(kù) -->  
    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
        <!--日志異步到數(shù)據(jù)庫(kù) --> 
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
           <!--連接池 --> 
           <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
              <driverClass>com.mysql.jdbc.Driver</driverClass>
              <url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
              <user>root</user>
              <password>root</password>
            </dataSource>
        </connectionSource>
  </appender>
</configuration>

3.2 在程序用引用Logback

package com.jd.springboot; 

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

public class HelloController{
     //定義一個(gè)全局的記錄器州弟,通過LoggerFactory獲取
     private final static Logger logger = LoggerFactory.getLogger(HelloController.class); 
    
    public static void main(String[] args) {
        logger.info("logback 成功了");
        logger.error("logback 成功了");
    }
}

四. logback.xml配置示例


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--
       說(shuō)明:
       1、日志級(jí)別及文件
           日志記錄采用分級(jí)記錄谋逻,級(jí)別與日志文件名相對(duì)應(yīng)呆馁,不同級(jí)別的日志信息記錄到不同的日志文件中
           例如:error級(jí)別記錄到log_error_xxx.log或log_error.log(該文件為當(dāng)前記錄的日志文件),而log_error_xxx.log為歸檔日志毁兆,
           日志文件按日期記錄浙滤,同一天內(nèi),若日志文件大小等于或大于10M气堕,則按0纺腊、1畔咧、2...順序分別命名
           例如log-level-2018-12-28.0.log
           其它級(jí)別的日志也是如此。
       2揖膜、文件路徑
           若開發(fā)誓沸、測(cè)試用,在Eclipse中運(yùn)行項(xiàng)目壹粟,則到Eclipse的安裝路徑查找logs文件夾拜隧,以相對(duì)路徑../logs。
           若部署到Tomcat下趁仙,則在Tomcat下的logs文件中
       3洪添、Appender
           FILEERROR對(duì)應(yīng)error級(jí)別,文件名以log-error-xxx.log形式命名
           FILEWARN對(duì)應(yīng)warn級(jí)別雀费,文件名以log-warn-xxx.log形式命名
           FILEINFO對(duì)應(yīng)info級(jí)別干奢,文件名以log-info-xxx.log形式命名
           FILEDEBUG對(duì)應(yīng)debug級(jí)別,文件名以log-debug-xxx.log形式命名
           stdout將日志信息輸出到控制上盏袄,為方便開發(fā)測(cè)試使用
    -->
    <contextName>SpringBootDemo</contextName>
    <property name="LOG_PATH" value="D:\\JavaWebLogs" />
    <!--設(shè)置系統(tǒng)日志目錄-->
    <property name="APPDIR" value="SpringBootDemo" />

    <!-- 日志記錄器忿峻,日期滾動(dòng)記錄 -->
    <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${LOG_PATH}/${APPDIR}/log_error.log</file>
        <!-- 日志記錄器的滾動(dòng)策略,按日期辕羽,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日志文件的路徑逛尚,例如今天是2013-12-21日志,當(dāng)前寫的日志文件路徑為file節(jié)點(diǎn)指定刁愿,可以將此文件與file指定文件路徑設(shè)置為不同路徑黑低,從而將當(dāng)前日志文件或歸檔日志文件置不同的目錄。
            而2018-12-28的日志文件在由fileNamePattern指定酌毡。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日志記錄之外蕾管,還配置了日志文件不能超過2M枷踏,若超過2M,日志文件會(huì)以索引0開始掰曾,
            命名日志文件旭蠕,例如log-error-2018-12-28.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只記錄info級(jí)別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 日志記錄器,日期滾動(dòng)記錄 -->
    <appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
        <!-- 日志記錄器的滾動(dòng)策略旷坦,按日期掏熬,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日志文件的路徑,例如今天是2018-12-28日志秒梅,當(dāng)前寫的日志文件路徑為file節(jié)點(diǎn)指定旗芬,可以將此文件與file指定文件路徑設(shè)置為不同路徑,從而將當(dāng)前日志文件或歸檔日志文件置不同的目錄捆蜀。
            而2018-12-28的日志文件在由fileNamePattern指定疮丛。%d{yyyy-MM-dd}指定日期格式幔嫂,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過10M誊薄,若超過10M履恩,日志文件會(huì)以索引0開始,
            命名日志文件呢蔫,例如log-error-2018-12-28.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只記錄info級(jí)別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 日志記錄器切心,日期滾動(dòng)記錄 -->
    <appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${LOG_PATH}/${APPDIR}/log_info.log</file>
        <!-- 日志記錄器的滾動(dòng)策略,按日期片吊,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日志文件的路徑绽昏,例如今天是2018-12-28日志,當(dāng)前寫的日志文件路徑為file節(jié)點(diǎn)指定定鸟,可以將此文件與file指定文件路徑設(shè)置為不同路徑而涉,從而將當(dāng)前日志文件或歸檔日志文件置不同的目錄。
            而2018-12-28的日志文件在由fileNamePattern指定联予。%d{yyyy-MM-dd}指定日期格式啼县,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過10M沸久,若超過10M季眷,日志文件會(huì)以索引0開始,
            命名日志文件卷胯,例如log-error-2018-12-28.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只記錄info級(jí)別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--encoder 默認(rèn)配置為PatternLayoutEncoder-->
        <encoder>
            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!--此日志appender是為開發(fā)使用子刮,只配置最底級(jí)別,控制臺(tái)輸出的日志級(jí)別是大于或等于此級(jí)別的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
    </appender>

    <logger name="org.springframework" level="WARN" />
    <logger name="org.hibernate" level="WARN" />

    <!-- 生產(chǎn)環(huán)境下窑睁,將此級(jí)別配置為適合的級(jí)別挺峡,以免日志文件太多或影響程序性能 -->
    <root level="INFO">
        <appender-ref ref="FILEERROR" />
        <appender-ref ref="FILEWARN" />
        <appender-ref ref="FILEINFO" />

        <!-- 生產(chǎn)環(huán)境將請(qǐng)stdout,testfile去掉 -->
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

點(diǎn)擊查看SpringBoot從入門到高級(jí)視頻教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市担钮,隨后出現(xiàn)的幾起案子橱赠,更是在濱河造成了極大的恐慌,老刑警劉巖箫津,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狭姨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡苏遥,警方通過查閱死者的電腦和手機(jī)饼拍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)田炭,“玉大人师抄,你說(shuō)我怎么就攤上這事〗塘颍” “怎么了司澎?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵欺缘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我挤安,道長(zhǎng)谚殊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任蛤铜,我火速辦了婚禮嫩絮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘围肥。我一直安慰自己剿干,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布穆刻。 她就那樣靜靜地躺著置尔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪氢伟。 梳的紋絲不亂的頭發(fā)上榜轿,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音朵锣,去河邊找鬼谬盐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛诚些,可吹牛的內(nèi)容都是我干的飞傀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诬烹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼砸烦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起绞吁,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤外冀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后掀泳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡西轩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年员舵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藕畔。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡马僻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出注服,到底是詐尸還是另有隱情韭邓,我是刑警寧澤措近,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站女淑,受9級(jí)特大地震影響瞭郑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸭你,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一屈张、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袱巨,春花似錦阁谆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至嫉入,卻和暖如春焰盗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劝贸。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工姨谷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人映九。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓梦湘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親件甥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捌议,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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

  • 在應(yīng)用程序中添加日志記錄總的來(lái)說(shuō)基于三個(gè)目的:監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 5,043評(píng)論 1 13
  • 在應(yīng)用程序中添加日志記錄總的來(lái)說(shuō)基于三個(gè)目的:監(jiān)視代碼中變量的變化情況引有,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 4,985評(píng)論 0 6
  • from:https://www.cnblogs.com/ITtangtang/p/3926665.html一瓣颅、L...
    enshunyan閱讀 3,290評(píng)論 0 0
  • 前言 今天來(lái)介紹下Spring Boot如何配置日志logback,我剛學(xué)習(xí)的時(shí)候,是帶著下面幾個(gè)問題來(lái)查資料的 ...
    OzanShareing閱讀 1,044評(píng)論 0 2
  • 還記得當(dāng)初僅見得書名譬正,內(nèi)心便開始反駁宫补。世界如此精彩,何來(lái)平凡呢曾我?后來(lái)還未讀完粉怕,我就已經(jīng)推翻了伊始的觀點(diǎn)。 ...
    已慣天涯莫浪愁閱讀 659評(píng)論 0 1