<?xml version="1.0" encoding="UTF-8"?>
<Configuration><!--Configuration有两个属性:status和monitorinterval-->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<!--<configuration status="WARN" monitorInterval="30"> -->
<Appenders><!--有“输出目的地”之意。(题外话:Appender和LogEvent都是log4j2的重要组件)Log4j2为使用者提供了13种非常实用的Appenders,使用者可用方便的调用这13种Appender来控制日志的输出
Appenders节点,常见的有三种子节点:Console、RollingFile、File.-->
<!--Console节点用来定义输出到控制台的Appender.
name:指定Appender的名字.
target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.
PatternLayout:输出格式,不设置默认为:%m%n.-->
<Console name="STDOUT-APPENDER" target="SYSTEM_OUT">
<PatternLayout pattern="%-5p %c{2} - %m%n%throwable" charset="UTF-8"/>
</Console>
<Console name="STDERR-APPENDER" target="SYSTEM_ERR">
<PatternLayout pattern="%-5p %c{2} - %m%n%throwable" charset="UTF-8"/>
</Console>
<!--RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.
name:指定Appender的名字.
fileName:指定输出日志的目的文件带全路径的文件名.
PatternLayout:输出格式,不设置默认为:%m%n.
filePattern:指定新建日志文件的名称格式.
Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.
TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am.
SizeBasedTriggeringPolicy:Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小.
DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。
append,boolean,指定是否是追加写入(append=true,默认情况),还是覆盖写入(append=false)-->
<RollingFile name="ERROR-APPENDER" fileName="${ctx:log_root}/${ctx:app_name}/common-error.log"
filePattern="${ctx:log_root}/${ctx:app_name}/common-error.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n%throwable"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了30 -->
<DefaultRolloverStrategy/>
<!--控制台只输出level及以上级别的信息(onMatch)
onMatch="ACCEPT" 表示匹配该级别及以上
onMatch="DENY" 表示不匹配该级别及以上
onMatch="NEUTRAL" 表示该级别及以上的,由下一个filter处理,如果当前是最后一个,则表示匹配该级别及以上
onMismatch="ACCEPT" 表示匹配该级别以下
onMismatch="NEUTRAL" 表示该级别及以下的,由下一个filter处理,如果当前是最后一个,则不匹配该级别以下的
onMismatch="DENY" 表示不匹配该级别以下的!
日志输出的优先级: debug < info < warn < error < fatal -->
<ThresholdFilter level="ERROR"/>
</RollingFile>
<RollingFile name="APP-DEFAULT-APPENDER" fileName="${ctx:log_root}/${ctx:app_name}/app-default.log"
filePattern="${ctx:log_root}/${ctx:app_name}/app-default.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n%throwable"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
<RollingFile name="SOFA-DEFAULT-APPENDER" fileName="${ctx:log_root}/${ctx:app_name}/sofa-default.log"
filePattern="${ctx:log_root}/${ctx:app_name}/sofa-default.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n%throwable"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
<RollingFile name="SETTING-CORE-SERVICE-APPENDER"
fileName="${ctx:log_root}/${ctx:app_name}/setting-core-service.log"
filePattern="${ctx:log_root}/${ctx:app_name}/setting-core-service.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
<RollingFile name="SETTING-BIZ-SERVICE-APPENDER"
fileName="${ctx:log_root}/${ctx:app_name}/setting-biz-service.log"
filePattern="${ctx:log_root}/${ctx:app_name}/setting-biz-service.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
<RollingFile name="SETTING-CONTROLLER-SERVICE-APPENDER"
fileName="${ctx:log_root}/${ctx:app_name}/setting-controller-service.log"
filePattern="${ctx:log_root}/${ctx:app_name}/setting-controller-service.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
<RollingFile name="BASELINE-CORE-SERVICE-APPENDER"
fileName="${ctx:log_root}/${ctx:app_name}/baseline-core-service.log"
filePattern="${ctx:log_root}/${ctx:app_name}/baseline-core-service.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
<RollingFile name="BASELINE-BIZ-SERVICE-APPENDER"
fileName="${ctx:log_root}/${ctx:app_name}/baseline-biz-service.log"
filePattern="${ctx:log_root}/${ctx:app_name}/baseline-biz-service.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
<RollingFile name="BASELINE-CONTROLLER-SERVICE-APPENDER"
fileName="${ctx:log_root}/${ctx:app_name}/baseline-controller-service.log"
filePattern="${ctx:log_root}/${ctx:app_name}/baseline-controller-service.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
<RollingFile name="BASELINE-TASK-SERVICE-APPENDER"
fileName="${ctx:log_root}/${ctx:app_name}/baseline-task-service.log"
filePattern="${ctx:log_root}/${ctx:app_name}/baseline-task-service.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
<RollingFile name="DATA-SYNC-SERVICE-APPENDER"
fileName="${ctx:log_root}/${ctx:app_name}/data-sync-service.log"
filePattern="${ctx:log_root}/${ctx:app_name}/data-sync-service.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
<RollingFile name="BASELINE-INTEGRATION-SERVICE-APPENDER"
fileName="${ctx:log_root}/${ctx:app_name}/baseline-integration-service.log"
filePattern="${ctx:log_root}/${ctx:app_name}/baseline-integration-service.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout
pattern="%d [%X{traceId} %X{rpcId} - %X{loginUserEmail}/%X{loginUserID}/%X{remoteAddr}/%X{clientId} - %X{requestURIWithQueryString}] %-5p %c{2} - %m%n"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy/>
</RollingFile>
</Appenders>
<!--Loggers节点,常见的有两种:Root和Logger.-->
<Loggers>
<!-- 采用异步输出日志
additivity的作用在于 children-logger是否使用 rootLogger配置的appender进行输出。
false:表示只用当前logger的appender-ref。
true:表示当前logger的appender-ref和rootLogger的appender-ref都有效。-->
<AsyncLogger name="STDOUT" additivity="false" level="info">
<AppenderRef ref="STDOUT-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="STDERR" additivity="false" level="${ctx:log_level}">
<AppenderRef ref="STDERR-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="com.alipay.sofa" additivity="false" level="${ctx:log_level}">
<AppenderRef ref="SOFA-DEFAULT-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="com.alipay.traasprod" additivity="false" level="${ctx:log_level}">
<AppenderRef ref="APP-DEFAULT-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
<AsyncRoot level="${ctx:log_level}">
<AppenderRef ref="APP-DEFAULT-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncRoot>
<!--自定义的日志输出 -->
<AsyncLogger name="SETTING_CORE_SERVICE" additivity="false" level="info">
<AppenderRef ref="SETTING-CORE-SERVICE-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="SETTING_BIZ_SERVICE" additivity="false" level="info">
<AppenderRef ref="SETTING-BIZ-SERVICE-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="SETTING_CONTROLLER_SERVICE_SERVICE" additivity="false" level="info">
<AppenderRef ref="SETTING-CONTROLLER-SERVICE-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="BASELINE_CORE_SERVICE" additivity="false" level="info">
<AppenderRef ref="BASELINE-CORE-SERVICE-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="BASELINE_TASK_SERVICE" additivity="false" level="info">
<AppenderRef ref="BASELINE-TASK-SERVICE-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="BASELINE_BIZ_SERVICE" additivity="false" level="info">
<AppenderRef ref="BASELINE-BIZ-SERVICE-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="BASELINE_CONTROLLER_SERVICE" additivity="false" level="info">
<AppenderRef ref="BASELINE-CONTROLLER-SERVICE-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="DATA_SYNC_SERVICE" additivity="false" level="info">
<AppenderRef ref="DATA-SYNC-SERVICE-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
<AsyncLogger name="BASELINE_INTEGRATION_SERVICE" additivity="false" level="info">
<AppenderRef ref="BASELINE-INTEGRATION-SERVICE-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</AsyncLogger>
</Loggers>
</Configuration>