log4j2 配置特定的业务日志打印到指定的日志文件中

时间:2025-03-23 08:24:27

由于业务需要,需要将某个接口的调用日志单独打印到指定的日志文件中,方便后续使用

配置文件修改

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="60">
	<Properties>
		<Property name="App">third-api</Property>
		<Property name="logDir">/home/migu/portal-third-api/logs</Property>
		<Property name="splitSize">100 MB</Property>
	</Properties>
	<Appenders>
		<!--查询接口单独打印-->
        <RollingFile name="dayunLog" fileName="${logDir}/${App}-"
                     filePattern="${logDir}/${App}-dayunInfo-%d{yyyy-MM-dd}-%">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm: z} [%thread] %-5level %logger{36} %L %M - %msg%xEx%n"/>
            <Policies>
                <!--interval属性用来指定多久滚动一次,默认是1, 单位到底是月 天 小时 分钟,根据filePattern配置的日期格式而定,本处的格式为天,则默认为1天-->
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <!--按大小分-->
                <SizeBasedTriggeringPolicy size="${splitSize}"/>
            </Policies>
            <Filters>
                <!-- 只记录info和warn级别信息 -->
                <!--<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>-->
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <!-- 指定每天的最大压缩包个数,默认7个,超过了会覆盖之前的 -->
            <DefaultRolloverStrategy max="1000"/>
        </RollingFile>
    </Appenders>
	<Loggers>
		<Root level="info"></root>
		<!--将logger中的 additivity 属性配置为 false,则这个logger不会将日志流反馈到root中。-->
        <!-- 自定义logger,用于代码中的日志单独打印 -->
        <Logger name="dayunLogger" additivity="true" level="INFO">
            <appender-ref ref="dayunLog" level="INFO" />
        </Logger>
	</Loggers>
</Configuration>

代码中的使用

import .;
import .;

public class MonitorController {
    // dayunLogger 为log4j2配置文件中配置的logger的name
    public Logger loggerDaYun = ("dayunLogger");

    public void test () {

        ("dayunTest");
    }
}