log4j2自定义logname打印到指定文件

7 篇文章 0 订阅

先说问题:

原来线上用的是log4j1,有一个日志文件是根据日志名,单独打印到一个日志文件中的。

比如:



@Slf4j
public class OperationLogger {

	private static Logger operationlog = LoggerFactory.getLogger("operationLog");

	public static void info(HouseOperationLog bean) {
		bean.setPostDate(new Date());
        log.info("xxxx");//该日志打印到root日志文件中
		operationlog.info(JSONObject.toJSONString(bean));//该日志打印到operationLog单独指定的文件中
	}

切换为log4j2之后,由于配置文件中,logger的name配置错误,配置成了类名,而不是指定的log的name,导致对应的日志没有打印到单独的文件中

<Logger name="com.xxx.log.Bar"

例子:log4j2.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>

        <Console name="bar" target="SYSTEM_OUT">
            <PatternLayout pattern="bar logger %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>

    </Appenders>
    <Loggers>
        <Logger name="com.xxx.log.Bar" level="info" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>
        <Logger name="bar" level="info" additivity="true">
            <AppenderRef ref="bar"/>
        </Logger>
        <Root level="error">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

对应的代码:

package com.xxx.log;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Bar {
    static final Logger logger = LogManager.getLogger(Bar.class);
    static final Logger logger_bar = LogManager.getLogger("bar");

    public boolean doIt() {
        logger.entry();
        logger.error("Did it again!");
        logger_bar.info("test bar log ... ");
        return logger.exit(false);
    }

    public static void main(String[] args) {
        new Bar().doIt();
    }
}

打印结果:

16:38:02.296 [main] ERROR com.xxx.log.Bar - Did it again!
bar logger 16:38:02.298 [main] INFO  bar - test bar log ... 
16:38:02.298 [main] INFO  bar - test bar log ... 

参考地址:

Log4j 2 Tutorial: Configuration Example for Logging in Java - Sematext

https://www.baeldung.com/log4j2-appenders-layouts-filters

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值