我目前正在使用 Spring Boot 应用程序,我正在将每个日志记录到控制台中。
但是现在我想将每个日志记录到特定的类文件名中。
示例
class A {
public void test() {
log.info("Test method");
}
}
因此,此代码的日志将位于日志文件夹之一中,其中文件名为
A
(类名称),日志“测试方法”将位于文件内 A
。
在 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