标准日志格式
<configuration scan="true">
<springProperty scope="context" name="logging.path" source="logging.path"/>
<springProperty scope="context" name="logging.level" source="logging.level"/>
<springProperty scope="context" name="spring.application.name" source="spring.application.name"/>
<appender name="ERROR-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>${logging.path}/${spring.application.name}/common-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${logging.path}/${spring.application.name}/common-error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<MaxFileSize>100MB</MaxFileSize>
<MaxHistory>14</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %thread %-5level [%X{SOFA-TraceId},%X{SOFA-SpanId}] [%X{NGDB-ServiceId}] [%X{NGDB-RetCd}] [%X{NGDB-BusinessId}] %logger{80} ---- %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="ROOT-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<append>true</append>
<file>${logging.path}/${spring.application.name}/common-default.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${logging.path}/${spring.application.name}/common-default.%d{yyyy-MM-dd}.%i.log </FileNamePattern>
<MaxFileSize>100MB</MaxFileSize>
<MaxHistory>14</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %thread %-5level [%X{SOFA-TraceId},%X{SOFA-SpanId}] [%X{NGDB-ServiceId}] [%X{NGDB-RetCd}] [%X{NGDB-BusinessId}] %logger{80} ---- %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<logger name="io.seata.saga" level="${logging.level}" additivity="false">
<appender-ref ref="ROOT-APPENDER"/>
</logger>
<logger name="org.dozer" level="OFF"/>
<logger name="org.apache.http" level="OFF"/>
<logger name="org.springframework.core.env" level="OFF"/>
<appender name="ASYNC_ROLLING_FILE" class="ch.qos.logback.classic.AsyncAppender">
<queueSize>100</queueSize>
<appender-ref ref="ROOT-APPENDER"/>
</appender>
<appender name="ASYNC_ROLLING_FILE_ERROR" class="ch.qos.logback.classic.AsyncAppender">
<queueSize>100</queueSize>
<appender-ref ref="ERROR-APPENDER"/>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} ---- %msg%n</pattern>
</encoder>
</appender>
<root level="${logging.level}">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ASYNC_ROLLING_FILE"/>
<appender-ref ref="ASYNC_ROLLING_FILE_ERROR"/>
</root>
</configuration>