<?xml version="1.0" encoding="UTF-8" ?>
<configuration status="DEBUG">
<properties>
<!--变量定义 -->
<property name="base_dir">${catalina.base}/logs/home/</property>
<property name="base_dir_info_file_name">info</property>
<property name="base_dir_error_file_name">error</property>
<property name="base_dir_warn_file_name">warn</property>
<property name="base_dir_rolling_file_name">rolling</property>
<property name="base_dir_file_old_name">-%d{yyyy-MM-dd-HH}_%i</property>
<property name="base_dir_file_ext">.log</property>
<property name="base_dir_file_old_ext">.log.gz</property>
<!--
%d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间
%t 输出当前线程名称
%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
%logger 输出logger名称,因为Root Logger没有名称,所以没有输出
%p : 日志输出格式
%c : logger的名称
%m : 日志内容,即 logger.info("message")
%n : 换行符
%C : Java类名
%L : 日志输出所在行数
%M : 日志输出所在方法名
%F : 输出所在的类文件名,如Client.java
%X{ip} MDC方式获取ip(等同于 %MDC{ip} 和 %mdc{ip} )
-->
<property name="log_pattern">%d [%t] %-5p %C %L -%m%n</property>
<!-- 日志切割的最小单位 -->
<property name="every_file_size">30M</property>
</properties>
<appenders>
<Console name="console" target="SYSTEM_OUT">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" />
<PatternLayout pattern="${log_pattern}"/>
</Console>
<!-- 不同的线程不同的文件-->
<Routing name="Routing">
<Routes pattern="$${ctx:ROUTINGKEY}">
<!--根据设定好的线程名 并且ThreadContext有值 (重写 实现StrLookup 不用第个方法写ThreadContext值 ${ctx:ROUTINGKEY} 改 ${thread:threadName})-->
<Route key="special">
<RollingFile name="Rolling-default" fileName="./logs/${date:yyyy-MM}/${ctx:ROUTINGKEY}-special-%d{yyyy-MM-dd}-%i.log" filePattern="./logs/${date:yyyy-MM}/default-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="${log_pattern}" />
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="${every_file_size}"/>
</Policies>
</RollingFile>
</Route>
<!--没有设定线程名,并且ThreadContext没值-->
<Route key="$${ctx:ROUTINGKEY}">
<RollingFile name="Rolling-${ctx:ROUTINGKEY}" fileName="Rolling-default" filePattern="./logs/${date:yyyy-MM}/default-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="${log_pattern}" />
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="${every_file_size}"/>
</Policies>
</RollingFile>
</Route>
<!--没有设定线程名,并且ThreadContext有值 (重写 实现StrLookup 不用第个方法写ThreadContext值 ${ctx:ROUTINGKEY} 改 ${thread:threadName})-->
<Route>
<RollingFile name="Rolling-${ctx:ROUTINGKEY}" fileName="./logs/other-${ctx:ROUTINGKEY}.log" filePattern="./logs/${date:yyyy-MM}/${ctx:ROUTINGKEY}-other-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="${log_pattern}" />
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="${every_file_size}"/>
</Policies>
</RollingFile>
</Route>
</Routes>
</Routing>
<!-- host:目标机器 -->
<!-- Port指定端口,默认514,参见/etc/rsyslog.conf -->
<!-- protocol指定传输协议,这里是UDP -->
<!-- <Syslog name="SYSLOG" host="localhost" port="514" protocol="UDP" facility="LOCAL3"/> -->
</appenders>
<loggers>
<!-- Root level 是设置全局的信息显示级别 -->
<!-- 级别排序: All < Trace < Debug < Info < Warn < Error < Fatal < OFF -->
<Root level="all">
<AppenderRef ref="Routing" />
</Root>
<!-- 'additivity="false" : 日志不再输出到控制台 -->
<logger name="org.springframework" level="OFF"></logger>
<logger name="org.mybatis" level="OFF"></logger>
<logger name="org.apache.http" level="OFF" />
</loggers>
</configuration>
log4j2-thread.xml
最新推荐文章于 2022-06-29 15:05:50 发布