spring-boot整合日志功能(logback、log4j2)

springboot為我們已經(jīng)內(nèi)置了log組件,隨意啟動一個最簡單的springboot項(xiàng)目,就可以在控制臺上看到該項(xiàng)目的日志信息。

介紹springboot內(nèi)置log組件

springboot log

我們可以通過ps -ef | grep springboot命令查看進(jìn)程pid核驗(yàn)。

Java 進(jìn)程

springboot為我們提供的日志功能的源碼在spring-boot包的logging目錄下

springboot logging code

修改日志級別

我們可以在application.properties文件中修改springboot內(nèi)置日志級別

logging.level.root=debug

springboot日志默認(rèn)級別為info。拓展一下:日志級別從低到高為TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF,級別越高,打印的日志越少。舉例說明:說將日志級別設(shè)定為Debug,那么DEBUG, INFO, WARN, ERROR, FATAL, OFF這幾類日志都會打印。

application.properties文件中日志key的第三級的含義為"路徑":

  • 填寫root,能夠指定整個項(xiàng)目(包含jdk源代碼打印的日志)的日志級別;
  • 填寫某個包名,能夠指定該包下所有Java文件的日志級別,其余為被指定的Java文件的日志級別為默認(rèn)級別:Info
  • 甚至可以指定任意Java文件,例如:
logging.level.com.springboot.CodeController=debug

它能夠指定任一Java文件的日志級別,除該Java class以外,其余的Java類日志級別均為默認(rèn)級別Info。讀者可以自行試驗(yàn)一下!筆者已經(jīng)試過,能夠配置成功。

幾個日志配置項(xiàng)

#指定日志文件目錄、名字
logging.file=/springboot/main.log
#指定日志文件目錄(默認(rèn)日志名為spring.log)
logging.path=/springboot
#指定控制臺輸出日志的pattern
logging.pattern.console=%-20(%d{yyyy-MM-dd HH:mm:ss.SSS} [Thread]) %-5level %logger{80} - %msg%n
#指定日志文件輸出日志的pattern
logging.file.console=%-20(%d{yyyy-MM-dd HH:mm:ss.SSS} [Thread]) %-5level %logger{80} - %msg%n

springboot項(xiàng)目中使用logback

springboot項(xiàng)目默認(rèn)支持logback,只需要在classpath下放入logback.xml/logback-spring.xml文件,即可定制日志輸出。以下給出一個logback.xml文件樣例

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="MainLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/mw/log/sherlock/main.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%class{16} %line] - %msg%n</Pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>/mw/log/sherlock/main.%d{yyyy-MM-dd}.%i.log.zip
            </FileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
    </appender>
    <root level="INFO">
        <appender-ref ref="MainLog"/>
    </root>
</configuration>

springboot項(xiàng)目中使用log4j2

在本示例項(xiàng)目中,我們添加了spring-boot-starter依賴,其默認(rèn)給我們添加了spring-boot-starter-logging依賴,此依賴中包含logback。讀者可以同樣順藤摸瓜,看看是否真是如此。所以,springboot項(xiàng)目默認(rèn)使用的是logback日志框架。如果想要使用log4j2框架,如要我們在spring-boot-starter依賴中將spring-boot-starter-logging排除,換成spring-boot-starter-log4j2。如下所示:

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

此時,我們就完成了將日志框架從logback改為log4j2的第一步操作。接下來,我們需要使用log4j2.xml/log4j2-spring.xml文件,去替代我們剛才放置下classpath路徑下的logback.xml文件。log4j2.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appenders>
        <Console name="console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="%-20(%d{yyyy-MM-dd HH:mm:ss.SSS} [Thread]) %-5level %logger{80} - %msg%n">

            </PatternLayout>
        </Console>
    </appenders>

    <loggers>
        <root lever="DEBUG">
            <appender-ref ref="console">
                
            </appender-ref>
        </root>
    </loggers>
</configuration>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容