Web 工程和 Core 工程的日志配置相同,因此本文將以 Core 工程為例,假設工程依賴信息如下:
groupId:
com.alipay.sofa
artifactId:
APPNAME
則根據上述信息,默認生成的日志配置文件為 service
模塊下的 src/main/resources/logback-spring.xml
,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--注意:若需要用 spring 擴展 profile 支持,則文件名應為 logback-spring.xml,而不是 logback.xml。-->
<springProperty scope="context" name="logging.path" source="logging.path"/>
<springProperty scope="context" name="logging.level" source="logging.level.com.alipay.sofa"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{HH:mm:ss.SSS}%-5level%logger{80}-%msg%n</Pattern>
</encoder>
</appender>
<!--以“天”為單位生成各日志文件-->
<appender name="ERROR-APPENDER"class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append>
<!--過濾器,只記錄 error 級別的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!--日志名稱-->
<file>${logging.path}/APPNAME/common-error.log</file>
<!--每天生成一個日志文件,保存30天的日志文件-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件輸出的文件名:按天回滾-->
<FileNamePattern>${logging.path}/APPNAME/common-error.log.%d{yyyy-MM-dd}</FileNamePattern>
<!--日志文件保留天數-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d 表示日期,%thread 表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n 是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%thread]%-5level%logger{50}-%msg%n</pattern>
<!--編碼-->
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="ROOT-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>${logging.level}</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>${logging.path}/APPNAME/common-default.log</file>
<!--每天生成一個日志文件,保存30天的日志文件-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件輸出的文件名:按天回滾 daily -->
<FileNamePattern>${logging.path}/APPNAME/common-default.log.%d{yyyy-MM-dd}
</FileNamePattern>
<!--日志文件保留天數-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d 表示日期,%thread 表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n 是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%thread]%-5level%logger{50}-%msg%n</pattern>
<!--編碼-->
<charset>UTF-8</charset>
</encoder>
</appender>
<logger name="com.alipay.sofa" level="${logging.level}" additivity="false">
<appender-ref ref="ROOT-APPENDER"/>
<appender-ref ref="ERROR-APPENDER"/>
</logger>
<root level="${logging.level}">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ROOT-APPENDER"/>
<appender-ref ref="ERROR-APPENDER"/>
</root>
</configuration>
說明:
通過官網文檔 創建工程 創建的 SOFABoot 工程,默認配置中創建了三個 appender,分別指向:
標準輸出(STDOUT):標準輸出是為了保證本地運行時能將一些應用中的啟動信息或者異常信息直接打印在控制臺中。但是,控制臺中并沒有顯示 SOFA 中間件的日志,中間件的日志均在指定目錄的中間件日志目錄下。
error 輸出(ERROR-APPENDER)。
info 輸出(ROOT-APPENDER)。
此工程默認在
resources/config/application.properties
中,創建了兩個日志相關的配置屬性,分別是:logging.level.com.alipay.sofa
:表示應用的日志打印級別。logging.path
:表示應用的日志存儲路徑。
配置映射關系:
logback-spring.xml
中屬性,通過屬性關鍵字轉換,分別映射到application.properties
中的logging.path
和logging.level
,示例如下:<springProperty scope="context" name="logging.path" source="logging.path"/> <springProperty scope="context" name="logging.level" source="logging.level.com.alipay.sofa"/>
文檔內容是否對您有幫助?