Java Slf4j/log4j:运行时添加的FileAppender不';行不通
我使用的是log4j2.5和slf4j1.7.19。这是我的log4j2.xml: 现在我想在运行时添加一个FileAppender: 不幸的是,这不起作用。正在创建日志文件(路径),但仍为空。不过,我希望包含最后一条log语句(“Appender added”)。 我根本没有收到任何错误消息Java Slf4j/log4j:运行时添加的FileAppender不';行不通,java,log4j,slf4j,log4j2,Java,Log4j,Slf4j,Log4j2,我使用的是log4j2.5和slf4j1.7.19。这是我的log4j2.xml: 现在我想在运行时添加一个FileAppender: 不幸的是,这不起作用。正在创建日志文件(路径),但仍为空。不过,我希望包含最后一条log语句(“Appender added”)。 我根本没有收到任何错误消息 您知道这里可能有什么问题吗?非常确定rootlogger不会有它需要的appender ref对象。谢谢。我以为我通过调用rootLogger.addAppender(appender)为根记录器提供
您知道这里可能有什么问题吗?非常确定rootlogger不会有它需要的appender ref对象。谢谢。我以为我通过调用
rootLogger.addAppender(appender)为根记录器提供了appender代码>?我刚刚意识到日志文件并不是空的,因为我们在应用程序中包含了MongoDB。事实上,一条MongoDB日志语句被写入文件中,例如:[INFO][ost-startStop-2]15:56:12454 52234。。org.mongodb.driver.connection:71-由于池已关闭,所以关闭了[connectionId{localValue:2,serverValue:68}]到localhost:27017的连接。
现在我完全糊涂了。这是什么意思?
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="log-path">D:/opt/verzeichnis-shop/logs/</Property>
</Properties>
<Appenders>
<Console name="A1" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5p][%15.15t]%d{HH:mm:ss,SSS} %-6r ..%35.35c:%-4L - %m%n"/>
</Console>
<RollingFile name="A2" fileName="${log-path}/vzshop.log" filePattern="${log-path}/vzshop_%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5p][%15.15t]%d{HH:mm:ss,SSS} %-6r ..%35.35c:%-4L - %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="de.mycompany.vzshop" level="debug" additivity="false">
<AppenderRef ref="A1"/>
<AppenderRef ref="A2"/>
</Logger>
<Root level="info">
<AppenderRef ref="A1"/>
<AppenderRef ref="A2"/>
</Root>
</Loggers>
</Configuration>
LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
File file = new File("path/to/log4j2.xml");
context.setConfigLocation(file.toURI());
public static void appendBookLogger(String bookDir, String uuid) {
LoggerContext loggerContext = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
String path = bookDir + File.separator + uuid + ".log";
logger.info("Adding appender: " + path);
final Configuration config = loggerContext.getConfiguration();
PatternLayout layout = PatternLayout.createLayout("[%-5p][%15.15t]%d{HH:mm:ss,SSS} %-6r ..%35.35c:%-4L - %m%n", null, config, null,
null,false, false, null, null);
Appender appender = FileAppender.createAppender(path, "false", "false", "File", "true",
"false", "false", "4000", layout, null, "false", null, config);
appender.start();
org.apache.logging.log4j.core.Logger rootLogger = loggerContext.getRootLogger();
rootLogger.addAppender(appender);
logger.info("Appender added.");
}