springboot 默認日誌配置

springboot 默認日誌配置

SpringBoot 日誌配置 默認採用LogBack做爲日誌輸出!html

日誌格式化

在這裏插入圖片描述

具體輸出的格式詳解以下:spring

2019-01-10 17:30:08.685 :日期精確到時間毫秒級別apache

info是日誌級別 : 能夠設置爲其餘的級別如debug,error等springboot

9184 :進程idapp

--- : 分割符spring-boot

main: 表示主線程佈局

com.xxxxx: 一般爲源碼類測試

「:」 後即爲詳細的日誌信息spa

控制檯輸出級別

在application.properties文件中配置線程

若是你的終端支持ANSI,設置彩色輸出會讓日誌更具可讀性。經過在application.properties中設置spring.output.ansi.enabled參數來支持。

  • NEVER:禁用ANSI-colored輸出(默認項)
  • DETECT:會檢查終端是否支持ANSI,是的話就採用彩色輸出(推薦項)
  • ALWAYS:老是使用ANSI-colored格式輸出,若終端不支持的時候,會有不少干擾信息,不推薦使用
#多彩輸出
spring.output.ansi.enabled=detect
#日誌級別
logging.level.root=info
#全部包下面都以debug級別輸出
logging.level.*=info

默認輸出格式

在這裏插入圖片描述
能夠經過 logging.pattern.console = 進行配置

文件輸出

springboot默認會將日誌輸出到控制檯,線上查看日誌時會很不方便,通常咱們都是輸出到文件。

須要在application.properties配置

#日誌輸出路徑問價 優先輸出 logging.file
logging.file=C:/Users/tizzy/Desktop/img/my.log

#設置目錄,會在該目錄下建立spring.log文件,並寫入日誌內容,
logging.path=C:/Users/tizzy/Desktop/img/

#日誌大小 默認10MB會截斷,從新輸出到下一個文件中,默認級別爲:ERROR、WARN、INFO
logging.file.max-size=10MB

在這裏插入圖片描述

logging.file 和 logging.path 同時設置時候會優先使用logging.file 做爲日誌輸出。

自定義日誌配置

日誌服務在ApplicationContext 建立以前就被初始化了,並非採用Spring的配置文件進行控制。

那咱們來如何進行自定義配置日誌呢。

springboot爲咱們提供了一個規則,按照規則組織配置文件名,就能夠被正確加載:

  • Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
  • Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
  • Log4j2:log4j2-spring.xml, log4j2.xml
  • JDK (Java Util Logging):logging.properties

LogBack xml配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- 控制檯打印日誌的相關配置 --> 
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- 日誌格式 -->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%level] - %m%n</pattern>
    </encoder>
    <!-- 日誌級別過濾器 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <!-- 過濾的級別 -->
      <level>WARN</level>
      <!-- 匹配時的操做:接收(記錄) -->
      <onMatch>ACCEPT</onMatch>
      <!-- 不匹配時的操做:拒絕(不記錄) -->
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>

  <!-- 文件保存日誌的相關配置 --> 
  <appender name="ERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
     <!-- 保存日誌文件的路徑 -->
    <file>/logs/error.log</file>
    <!-- 日誌格式 -->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>
    </encoder>
    <!-- 日誌級別過濾器 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <!-- 過濾的級別 -->
      <level>ERROR</level>
      <!-- 匹配時的操做:接收(記錄) -->
      <onMatch>ACCEPT</onMatch>
      <!-- 不匹配時的操做:拒絕(不記錄) -->
      <onMismatch>DENY</onMismatch>
    </filter>
    <!-- 循環政策:基於時間建立日誌文件 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- 日誌文件名格式 -->
      <fileNamePattern>error.%d{yyyy-MM-dd}.log</fileNamePattern>
      <!-- 最大保存時間:30天-->
      <maxHistory>30</maxHistory>
    </rollingPolicy>
  </appender>

  <!-- 基於dubug處理日誌:具體控制檯或者文件對日誌級別的處理還要看所在appender配置的filter,若是沒有配置filter,則使用root配置 -->
  <root level="debug">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="ERROR-OUT" />
  </root>
</configuration>

Log4j

引如Log4j日誌時候 須要 排除logBack日誌

<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-log4j</artifactId>

</dependency>

# 日誌級別,日誌追加程序列表...
log4j.rootLogger=DEBUG,ServerDailyRollingFile,stdout
#文件保存日誌
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
#文件保存日誌日期格式
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd_HH
#文件保存日誌文件路徑
log4j.appender.ServerDailyRollingFile.File=/mnt/lunqi/demo/log4j.log
#文件保存日誌佈局程序
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
#文件保存日誌佈局格式
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n
#文件保存日誌須要向後追加(false是測試的時候日誌文件就清空,true的話就是在以前基礎上日後寫)
log4j.appender.ServerDailyRollingFile.Append=false
#控制檯日誌
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#控制檯日誌佈局程序
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#控制檯日誌佈局格式
log4j.appender.stdout.layout.ConversionPattern=%d yyyy-MM-dd HH:mm:ss %p [%c] %m%n

Log4j2

一樣排除LogBack干擾,而且引入Log4j2依賴

<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>

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration> 
    <appenders> 
        <Console name="Console" target="SYSTEM_OUT"> 
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> 
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
        </Console>
        <File name="log" fileName="log/test.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
        </File> 
        <RollingFile name="RollingFile" fileName="logs/spring.log" filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" />
            <SizeBasedTriggeringPolicy size="50MB" />
        </RollingFile>
    </appenders> 

    <loggers> 
        <root level="trace">
            <appender-ref ref="RollingFile" />
            <appender-ref ref="Console" />
        </root>
    </loggers>
</configuration>

更多查看官方文檔

https://docs.spring.io/spring...

相關文章
相關標籤/搜索