Log4j2 未记录到文件

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

我在我的应用程序中使用 Log4j2,它似乎加载和初始化得很好。 控制台被登录,2 个指定的文件附加程序创建各自的文件,但这些文件保持为空!

我的配置有问题吗?我启动 Log4j2 的方式是否错误?

这是配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
    <Appenders>
        <File name="file" fileName="${sys:logdir}ftm.log">
            <PatternLayout pattern="%d{MM.dd.yyyy HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
        <File name="file_error" fileName="${sys:logdir}ftm_error.log">
            <PatternLayout pattern="%d{MM.dd.yyyy HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{MM.dd.yyyy HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="ALL">
            <AppenderRef ref="file" level="ALL"/>
            <AppenderRef ref="STDOUT" level="ALL"/>
        </Root>
        <Logger name="FTM" level="ALL" additivity="true">
            <AppenderRef ref="file_error" level="ERROR"/>
        </Logger>
    </Loggers>
</Configuration>

这是代码:

LoggerContext contextLogging = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);

File file = new File("log4j2.xml");
if (file != null && file.isFile() && file.canRead()){
    contextLogging.setConfigLocation(file.toURI());
}

在此初始化位之后,我开始在整个应用程序的各个点进行日志记录。

java xml log4j2
3个回答
1
投票

我怀疑您获取 LoggerContext 的调用导致 Log4j 初始化。您应该看到一条消息,说明正在使用默认配置。为什么不只使用 Configurator.initialize() 方法之一?


0
投票

我也发现了同样的问题。这是重新配置的问题。 可能是 log4j 代码中的错误。

我改变

System.setProperty("myapp.log.dir", "/tmp/myapp");
URL logres = App.class.getClassLoader().getResource("log4j2_myapp.xml");
LoggerContext.getContext().setConfigLocation(logres.toURI());

System.setProperty("myapp.log.dir", "/tmp/myapp");
URL logres = App.class.getClassLoader().getResource("log4j2_myapp.xml");
Configurator.initialize("myapp", App.class.getClassLoader(), logres.toURI());

一切正常。


-1
投票

也许 LOG4J2 正在缓冲您的日志消息并稍后写入它们。 您是否尝试过关闭您的应用程序服务器? 这将强制将所有缓冲的消息写入文件。

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