項目日誌(slf4j + logback)

一、項目環境及說明

1、項目環境

springBoot2.X

Slf4j + logback 日誌框架結合

2、說明

在項目中日誌輸出是很重要的一項,能夠方便以後問題的排查。下面的演示是在springBoot2.x的基礎上進行Slf4j + logback 日誌框架結合,並且測試通過。

二、Slf4j + logback的配置及使用

1、需要的jar包

2、需要的pom配置

        <!--日誌-->
        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.2</version>
        </dependency>

3、logback.xml配置文件

(1)存放位置

放在resources下面

(2)配置細節

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">

	<!--<property name="Tomcat_HOME" value="${catalina.home}/ETLLog" />-->
	<!-- 默認日誌以_info.log和_error.log結尾, 此處配置log的前綴 例如ATest_info.log、ATest_error.log -->
	<property name="LOG_PREFIX" value="DataToCache" />
	<!-- 日誌文件目錄, ./log代表日誌輸出到當前程序所在目錄下的log目錄下 -->
	<property name="LOG_DIR" value="./log" />
	<!-- info日誌默認保存7天, 由於部分日誌文件較大,可以修改該值 -->
	<property name="MAX_HISTORY_INFO" value="100" />
	<!-- error日誌默認保存30天, 由於部分日誌文件較大,可以修改該值 -->
	<property name="MAX_HISTORY_ERROR" value="100" />

	<!-- 輸出日誌到控制檯 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-21thread] %-5level %logger{16} - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>

		<!-- 臨界值過濾器 過濾掉低於臨界值的日誌 當日志界別等於或高於臨界值時,過濾器返回NEUTRAL, 當日止界別低於臨界值時,日誌會被拒絕 -->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>DEBUG</level>
		</filter>
	</appender>

	<!-- 輸出info日誌到文件 -->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_DIR}/${LOG_PREFIX}.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

			<!-- daily rollover -->
			<fileNamePattern>${LOG_DIR}/${LOG_PREFIX}.%d{yyyy-MM-dd}.%i.log </fileNamePattern>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>100MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>

			<!-- keep 30 days' worth of history -->
			<maxHistory>${MAX_HISTORY_INFO}</maxHistory>
		</rollingPolicy>

		<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-21thread] %-5level %logger - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>

	<root level="info">
		<appender-ref ref="FILE" />
		<appender-ref ref="STDOUT" />
	</root>
</configuration>

(3)生成日誌樣式

說明:此種樣式是按天生成日誌。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章