定義日誌層級
理想日誌存放路徑與格式如下:
/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>