java 如何使用Log4j2为每个类创建日志文件?

vsdwdz23  于 2023-03-28  发布在  Java
关注(0)|答案(1)|浏览(182)

我目前正在使用Sping Boot 应用程序,在那里我将每个Log注销到控制台。
但是现在我想将每个日志记录到一个特定的类文件名中。
示例

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

因此,这段代码的日志将在其中一个日志文件夹中,其中文件名为A(类名),日志“Test method”将在文件A中。

kkbh8khc

kkbh8khc1#

在java代码中,你不仅有log语句,还有一些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)中,记录器匹配类别,你可以定义哪个类别对应哪个appender。最后,你可以设置appender写入文件或控制台或其他目的地,如下所示:

<?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>

虽然这是可能的,但我不认为为每个类创建一个单独的日志文件(=〉file appender)是非常有效的,但在库级别上这是有意义的。
详情请参阅https://logging.apache.org/log4j/2.x/manual/configuration.html

相关问题