Spring Boot Logging 配置

Spring Boot 能夠使用Logback, Log4J2 , java util logging 作為日志記錄工具问词。Spring Boot 默認(rèn)使用Logback作為日志記錄工具哗魂。日志默認(rèn)輸出到控制臺(tái)但也能輸出到文件中燎窘。我們通過spring-boot-starter-logging 加入Logback依賴,其實(shí)只要我們加入任意的Spring Boot starter 都會(huì)默認(rèn)引入spring-boot-starter-logging椒惨,因此 我們不需要分開加入他們系洛。

image.png

如果Logback JAR在類路徑一直可用那么Spring Boot 將一直選擇Logback 記錄日志。所以想用其他的日志工具如Log4J2硼砰,我們需要去除Logback JAR并且在類路徑中加入Log4J2的依賴。如果使用Logback記錄日志我們不用做任何事情欣硼,只要在application.properties或者application.yml中配置日志級(jí)別就可以了。console默認(rèn)輸入ERROR, WARN 恶阴,INFO級(jí)別的日志诈胜。可通過修改logging.level屬性來改變?nèi)罩镜妮敵黾?jí)別冯事〗剐伲可以通過配置logging.file屬性或logging.path屬性將日志輸出到文件中。當(dāng)文件到達(dá)10M的時(shí)候昵仅,將新建一個(gè)文件記錄日志

image.png

logging.level.* : 作為package(包)的前綴來設(shè)置日志級(jí)別缓熟。
logging.file :配置日志輸出的文件名累魔,也可以配置文件名的絕對(duì)路徑。
logging.path :配置日志的路徑够滑。如果沒有配置logging.file,Spring Boot 將默認(rèn)使用spring.log作為文件名垦写。
logging.pattern.console :定義console中l(wèi)ogging的樣式。
logging.pattern.file :定義文件中日志的樣式彰触。
logging.pattern.level :定義渲染不同級(jí)別日志的格式梯投。默認(rèn)是%5p.
logging.exception-conversion-word :.定義當(dāng)日志發(fā)生異常時(shí)的轉(zhuǎn)換字
PID :定義當(dāng)前進(jìn)程的ID

下面將討論在application.properties , application.ym ,Logback XML中配置Logback以及在Spirng Boot 應(yīng)用中使用Log4J2.

1.logging.level

logging.level設(shè)置日志級(jí)別。我們可以使用TARCE , DEBUG , INFO , WARN , ERROR , FATAL , OFF 况毅》直停可以使用root級(jí)別和package級(jí)別來控制日志的輸入級(jí)別。創(chuàng)建一個(gè)具有以下依賴關(guān)系的應(yīng)用程序尔许。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency> 

使用src\main\resources\application.properties配置日志級(jí)別

logging.level.root= WARN
logging.level.org.springframework.security= DEBUG
logging.level.org.springframework.web= ERROR
logging.level.org.hibernate= DEBUG
logging.level.org.apache.commons.dbcp2= DEBUG 

使用src\main\resources\application.yml

logging:
  level:
    root: WARN        
    org:
      springframework:
        security: DEBUG
        web: ERROR    
      hibernate: DEBUG        
      apache:
        commons:
          dbcp2: DEBUG 
2.logging.file

Spring Boot 默認(rèn)把日志輸入到console么鹤,如果我們要把日志輸入到文件中,需要配置logging.file 或者logging.path屬性性味廊。logging.file屬性用來定義文件名蒸甜。他不僅僅可以配置文件名,也可以路徑+文件名毡们。

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG

logging.file = mylogfile.log 

在這種情況下mylogfile.log將在根目錄中創(chuàng)建迅皇。我們也可以為為mylogfile.log分配一個(gè)路徑,如concretepage/mylogfile.log衙熔。這種情況下我們將在相對(duì)根目錄下創(chuàng)建concretepage/mylogfile.log登颓。我們也可以為日志文件配置絕對(duì)路徑。
application.yml中配置

logging:
  level:
    org:
      springframework:
        security: DEBUG
    hibernate: DEBUG

  file: mylogfile.log  
3.logging.path

配置logging.path或者logging.path屬性將日志輸出到文件夾中红氯。logging.path屬性用來定義日志文件路徑
application.properties中配置logging.path屬性

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG

logging.path = concretepage/logs  

將會(huì)相對(duì)根路徑下創(chuàng)建concretepage/logs/spring.log ,也可以配置絕對(duì)路徑

application.yml配置

logging:
  level:
    org:
      springframework:
        security: DEBUG
    hibernate: DEBUG

  path: concretepage/logs  
4.logging.patter.console

通過設(shè)置logging.patter.console屬性我們能改變輸出到console的日志樣式框咙。日志樣式包括時(shí)間,日志級(jí)別痢甘,線程名喇嘱,日志名以及消息。我們可以按我們的喜好改變?nèi)罩緲邮健?br> application.properties


logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG

logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n

application.yml

logging:
  level:
    org:
      springframework:
        security: DEBUG
    hibernate: DEBUG

  pattern:
    console: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n' 
5.logging.pattern.file

改變文件中的日志樣式我們需要設(shè)置logging.pattern.file屬性塞栅。首先通過logging.file或logging.path屬性者铜,把日志記錄到文件中。

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG

logging.path = concretepage/logs
logging.pattern.file= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n  

通過logging.path屬性將在根目錄下創(chuàng)建concretepage/logs并默認(rèn)使用spring.log作為文件名放椰。logging.pattern.console是設(shè)置console的日志樣式
application.yml

logging:
  level:
    org:
      springframework:
        security: DEBUG
    hibernate: DEBUG
    
  path: concretepage/logs
  pattern:
    file: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
    console: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n' 

通過命令行改變?nèi)罩镜妮敵黾?jí)別
Sping Boot 默認(rèn)輸出ERROR , WARN , INFO 級(jí)別的日志作烟。我們可以通過命令行使能DEBUG ,TRACE級(jí)別的日志輸出,效果是跟配置文件一樣的砾医。想象我們有一個(gè)名為my-app.jar的可執(zhí)行的JAR包我們可以在啟動(dòng)應(yīng)用是使能DEBUG級(jí)別日志輸出拿撩。

java -jar my-app.jar --debug  

在application.properties中配置

debug=true  

application.yml

debug=true  

相同的方式使能TRACE級(jí)別的日志

java -jar my-app.jar --trace  

application.properties

trace=true

application.yml

trace=true

在應(yīng)用程序中記錄日志
創(chuàng)建一個(gè)SLF4J的例子,首先獲得org.slf4j.Logger的實(shí)例如蚜。

package com.concretepage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
    private static final Logger logger = LoggerFactory.getLogger(MyApplication.class);  
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
        logger.debug("--Application Started--");
        }       
}  

在application.properties配置包c(diǎn)om.concretepage日志記錄級(jí)別

logging.level.root= WARN
logging.level.org.springframework.web= ERROR
logging.level.com.concretepage= DEBUG  

輸出

2017-03-25 19:03:54.189 DEBUG 4828 --- [           main] com.concretepage.MyApplication           : Running with Spring Boot v1.5.2.RELEASE, Spring v4.3.7.RELEASE
2017-03-25 19:03:54.189  INFO 4828 --- [           main] com.concretepage.MyApplication           : No active profile set, falling back to default profiles: default
2017-03-25 19:03:58.846  INFO 4828 --- [           main] com.concretepage.MyApplication           : Started MyApplication in 5.209 seconds (JVM running for 5.66)
2017-03-25 19:03:58.846 DEBUG 4828 --- [           main] com.concretepage.MyApplication           : --Application Started--  

使用Logback XML 文件
Sping Boot中默認(rèn)使用logback, 我們可以在application.properties或者application.yml中設(shè)置日志級(jí)別压恒。如果想使用XML配置Logback,我們需要在類路徑下創(chuàng)建logback-spring.xml文件
src\main\resources\logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <logger name="org.springframework.web" level="ERROR"/>
    <logger name="com.concretepage" level="DEBUG"/>
</configuration>  

使用自定義日志:Log4J2
我們使用任何的starter,默認(rèn)加入Logback 依賴spring-boot-starter-logging影暴。為了使用Log4J2,我們首先要去除spring-boot-starter-logging并且引入spring-boot-starter-log4j2 依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

現(xiàn)在我們可以在類路徑下創(chuàng)建并配置log4j2-spring.xml

原文:http://www.concretepage.com/spring-boot/spring-boot-logging-example

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市探赫,隨后出現(xiàn)的幾起案子型宙,更是在濱河造成了極大的恐慌,老刑警劉巖期吓,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件早歇,死亡現(xiàn)場離奇詭異,居然都是意外死亡讨勤,警方通過查閱死者的電腦和手機(jī)箭跳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來潭千,“玉大人谱姓,你說我怎么就攤上這事∨偾纾” “怎么了屉来?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長狈癞。 經(jīng)常有香客問我茄靠,道長,這世上最難降的妖魔是什么蝶桶? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任慨绳,我火速辦了婚禮,結(jié)果婚禮上真竖,老公的妹妹穿的比我還像新娘脐雪。我一直安慰自己,他們只是感情好恢共,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布战秋。 她就那樣靜靜地躺著,像睡著了一般讨韭。 火紅的嫁衣襯著肌膚如雪脂信。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天透硝,我揣著相機(jī)與錄音吉嚣,去河邊找鬼。 笑死蹬铺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秉撇。 我是一名探鬼主播甜攀,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼秋泄,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了规阀?” 一聲冷哼從身側(cè)響起恒序,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谁撼,沒想到半個(gè)月后歧胁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厉碟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年喊巍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箍鼓。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崭参,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出款咖,到底是詐尸還是另有隱情何暮,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布铐殃,位于F島的核電站海洼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏富腊。R本人自食惡果不足惜坏逢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蟹肘。 院中可真熱鬧词疼,春花似錦、人聲如沸帘腹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阳欲。三九已至舵盈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間球化,已是汗流浹背秽晚。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筒愚,地道東北人赴蝇。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像巢掺,于是被迫代替她去往敵國和親句伶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子劲蜻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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