springboot支付項目之日誌配置

  • 2019 年 10 月 5 日
  • 筆記

日誌框架

本節主要內容:

1:常見的幾種日誌框架

2:Logback的使用

3:怎麼配置info和error級別日誌到不同文件中並且按照日期每天一個文件。

以上幾個框架可以分類如下:

SLF4J和Logback的使用

日誌級別:

級別越大越嚴重。

一:Java類中使用日誌兩種方式:

方式一:在每個類中添加日誌對象:

private  final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

方法二:使用lombok插件:

在pom.xml文件中添加lombok依賴:

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<optional>true</optional>

</dependency>

然後再類上面使用@slf4j註解

推薦使用第二種,註解方式。這樣就不用再每個類中添加了。

二:變數的列印

方式一:使用字元串+的方式。

直接使用字元串+的。如果變數多,+就需要很多了。

方式二:使用佔位符的方式。

兩個運行的結果:

推薦使用第二種,這樣一看及明白。

Logback的配置

兩種配置方式:

application.yml和logback-spring.xml

也就是一種基於yml文件一種基於xml文件配置的

來看下項目中經常遇到的日誌需求:

區分info和error日誌;每天產生一個日誌文件。

方式一:再yml文件中配置

我們可以看到,logging相關配置還很多的。如console列印的日誌格式、日期格式、文件、日誌級別、日誌最大大小等等。都可以配置的。

如:我們配置在控制台輸出時間-資訊換行。這個怎麼配置呢?

查看運行結果:

配置日誌輸出位置:

運行後,可以在C盤下看到一個aa文件夾,打開就是日誌文件了。如下圖:

默認日誌文件名稱是spring.log。如果想修改成自己的可以使用file。如下圖

運行後:

修改日誌級別:

日誌級別還可以綁定到指定的類上面。如:

第二種方式:使用xml文件配置

1:控制台輸出:

2:根據不同日誌級別輸出到不同日誌文件中。文件名帶上日期

可以看到,文件滾動方式有很多,可以安裝大小和時間、可以按照時間的。如下圖:

配置後文件如下:

基於XML配置的所有配置資訊:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<!– 控制台輸入日誌格式配置–>

<appender name="consolelogg" class="ch.qos.logback.core.ConsoleAppender">

<layout class="ch.qos.logback.classic.PatternLayout">

<pattern>

               %d -%msg%n

</pattern>

</layout>

</appender>

<!– info日誌 每天一個日誌文件配置–>

<appender name="infoFileLog" class="ch.qos.logback.core.rolling.RollingFileAppender">

<filter class="ch.qos.logback.classic.filter.LevelFilter">

<level>ERROR</level>

<onMatch>DENY</onMatch>

<onMismatch>ACCEPT</onMismatch>

</filter>

<encoder>

<pattern>

               %msg%n

</pattern>

</encoder>

<!– 配置日誌滾動策略–>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<!– 文件路徑.文件名稱中帶有日期–>

<fileNamePattern>c:/aa/info.%d.log</fileNamePattern>

</rollingPolicy>

</appender>

<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">

<level>ERROR</level>

</filter>

<encoder>

<pattern>

               %msg%n

</pattern>

</encoder>

<!–滾動策略–>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<!–路徑–>

<fileNamePattern>c:/aa/error.%d.log</fileNamePattern>

</rollingPolicy>

</appender>

<root level="info">

<appender-ref ref="consolelogg"/>

<appender-ref ref="infoFileLog"/>

<appender-ref ref="fileErrorLog"/>

</root>

</configuration>

各位有什麼更好的日誌框架介紹下唄