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

这篇博客介绍了如何通过修改log4j2.xml配置文件,将特定接口的调用日志独立出来,记录到指定的日志文件中。配置包括设置日志路径、文件命名规则、大小滚动策略以及过滤器,确保日志信息的易读性和管理性。同时,展示了在代码中如何引用配置的logger进行日志输出。

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

log4j2.xml配置文件修改

<?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}-dayunInfo.log"
                     filePattern="${logDir}/${App}-dayunInfo-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS 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 org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

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

    public void test () {

        loggerDaYun.info("dayunTest");
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值