我在jetty9上运行的maven java war应用程序中使用log4j 2.x. 我只需要遵循以下结构:
我遵循log4j2.xml config:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%-5L - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
我在maven pom中使用了follow依赖:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
并关注导入:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.Logger;
我尝试用大量的log4j类进行头脑风暴伏都教:
//Configuration c = new AbstractConfiguration
//PatternLayout layout = new PatternLayout();
//FileAppender appender = new FileAppender("printlog", Layout.);
//logger.addAppender(null);
//OHH MY GOD!!!!
我在https://logging.apache.org/log4j/2.x/manual/appenders.html#FileAppender这样的文档中搜索过很多,但我找不到任何接近解决问题的方法
我发现的只是手册中的配置文件appender的硬编码路径
如何以编程方式执行?
我需要以编程方式定义的FileAppender从xml config中定义的ConsoleAppender继承PatternLayout,因为代码重用和单点控制问题。