如何使用Log4j2为每个类制作日志文件?

问题描述 投票:0回答:1

我目前正在使用 Spring Boot 应用程序,我正在将每个日志记录到控制台中。

但是现在我想将每个日志记录到特定的类文件名中。

示例

class A {
    public void test() {
        log.info("Test method");
    }
}

因此,此代码的日志将位于日志文件夹之一中,其中文件名为

A
(类名称),日志“测试方法”将位于文件内
A

java spring-boot logging log4j2
1个回答
2
投票

在 Java 代码中,您不仅有日志语句,还有

log
实例的一些初始化程序,如下所示:

class A {
    private static Logger log = LogManager.getLogger(A.class);

    public void test() {
        log.info("blah");
    }
}

class B {
    private static Logger log = LogManager.getLogger(B.class);

    public void test() {
        log.info("blah");
    }
}

class C {
    private static Logger log = LogManager.getLogger(C.class);

    public void test() {
        log.info("blah");
    }
}

现在在您的日志记录配置(log4j2.xml)中,记录器匹配类别,您可以定义哪个类别属于哪个附加程序。最后,您可以设置附加程序以写入文件或控制台或其他目的地,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <Appender type="File" name="File" fileName="/path/to/logfiles/AandB.log">
            <Layout type="PatternLayout">
                <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
            </Layout>
        </Appender>
    </Appenders>
    <Loggers>
        <Logger level="info"  name="A"><!-- speficially route these messages to the file appender only -->
            <AppenderRef ref="File"/> 
        </Logger>
        <Logger level="info"  name="B"><!-- speficially route these messages to the file and console appenders -->
            <AppenderRef ref="Console"/> 
            <AppenderRef ref="File"/> 
        </Logger>
        <Root level="trace"> <!-- per default route all log statements to the console, which is where logging for C will end up -->
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>    
</Configuration>

虽然这是可能的,但我认为为每个类创建单独的日志文件(=> 文件附加器)并不是非常有效。但在图书馆层面,这是有道理的。

查看详细信息https://logging.apache.org/log4j/2.x/manual/configuration.html

© www.soinside.com 2019 - 2024. All rights reserved.