Logback個性化日誌定製

定義日誌層級

理想日誌存放路徑與格式如下:

/data/cloud/logs/cloud.activity.api/${logTag}/%d{yyyyMMdd}/info.log.%i

最終會生成:

/data/cloud/logs/cloud.activity.api/market-app/20200330/info.log.1

對外服務日誌與內部服務日誌分離

我這裏部署多個activity服務,大多數供外部調用,如:app、小程序、微信公衆號等,少數服務供後臺調用。

例:logTag=market-app

所以爲了查看日誌方便,需要給不同應用劃分獨立的日誌,傳入變量${logTag}達到劃分日誌的目的。

logback-spring配置

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

<configuration scan="true" scanPeriod="10 seconds">

	<springProperty scope="context" name="logTag" source="logtag"/>
	<property resource="bootstrap.properties" />
	<!--定義日誌文件的存儲地址和前綴名 -->
	<property name="LOG_HOME" value="/data/cloud/logs/cloud.activity.api" />

	<!-- 一般信息按照每天生成日誌文件 -->
	<appender name="INFO_FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy
			class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<!-- 每天一歸檔 -->
			<fileNamePattern>${LOG_HOME}/${logTag}/%d{yyyyMMdd}/info.log.%i
			</fileNamePattern>
			<!-- 單個日誌文件最多500MB, 30天的日誌週期,最大不能超過20GB -->
			<maxFileSize>500MB</maxFileSize>
			<maxHistory>30</maxHistory>
			<totalSizeCap>20GB</totalSizeCap>
		</rollingPolicy>
		<encoder>
			<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符 -->
			<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
				-%msg%n</Pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>

	<!--錯誤信息按照每天生成日誌文件 -->
	<appender name="ERROR_FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
		<rollingPolicy
			class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<!-- 每天一歸檔 -->
			<fileNamePattern>${LOG_HOME}/${logTag}/%d{yyyyMMdd}/error.log.%i
			</fileNamePattern>
			<!-- 單個日誌文件最多500MB, 30天的日誌週期,最大不能超過20GB -->
			<maxFileSize>500MB</maxFileSize>
			<maxHistory>30</maxHistory>
			<totalSizeCap>20GB</totalSizeCap>
		</rollingPolicy>
		<encoder>
			<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符 -->
			<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
				-%msg%n</Pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>

	<!-- 控制檯輸出 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) [%class{16}:%line] %highlight(%-5level) - %cyan(%msg%n)
			</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	
 	<!--myibatis log configure-->
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="INFO"/>
    <logger name="java.sql.Statement" level="INFO"/>
    <logger name="java.sql.PreparedStatement" level="INFO"/>
    <!--logback-spring.xml-->

	<!-- 日誌輸出級別 這樣設置不打印日誌 -->
	<root level="INFO">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="INFO_FILE" />
		<appender-ref ref="ERROR_FILE" />
	</root>

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