【问题标题】:log4j2 creates empty logs filelog4j2 创建空日志文件
【发布时间】:2021-11-06 01:25:24
【问题描述】:

我是 log4j2 的新手,但是我有这个使用 log4j 的应用程序,我不得不将其更改为 log4j2 版本。

正在创建日志文件但它总是空的,这个项目不使用 maven 所以我没有任何 pom.xml,我只有我的 log4j2.xml,它看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="archive" fileName="/${sys:ENTORNO}/online/es/web/logs/WebSeal_EAI${sys:cloneId}.log"
                filePattern="/${sys:ENTORNO}/online/es/web/logs/WebSeal_EAI${sys:cloneId}.log.%d{yyyy-MM-dd}.gz">
            <PatternLayout>
                <Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %log{36} - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" />
            </Policies>
        </RollingFile>
        <Console name="screen" target="SYSTEM_OUT">
            <PatternLayout>
                <Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %log{36} - %m%n</Pattern>
            </PatternLayout>
        </Console>
    </Appenders>

    <Loggers>
        <Root level="debug">
            <AppenderRef ref="archive"/>
        </Root>
    </Loggers>
</Configuration>

在 java 中,我像这样加载配置:

            File file = new File(log4Jcfg);
            ConfigurationFactory factory =  XmlConfigurationFactory.getInstance();
            ConfigurationSource configurationSource = new ConfigurationSource(new FileInputStream(new File(log4Jcfg)));
            Configuration configuration = factory.getConfiguration(context, configurationSource);
            context = new LoggerContext("JournalDevLoggerContext");
            context.start(configuration);

log4Jcfg 具有 xml 路径。它创建的文件,但它总是空的,我真的不知道为什么。

我已经阅读了很多这样的问题,并尝试了几乎所有的东西(我认为),因为我将 .xml 放在类路径中,我更改了一些关于 xml 的东西,但这些都对我不起作用。

任何人都知道发生了什么,我的意思是,如果创建了文件,为什么它不打印任何东西? 我加载配置的 .xml 或 java 代码有问题吗?

此外,该项目使用服务器 Websphere v9.0。

非常感谢。

【问题讨论】:

  • 代码似乎正确(除了创建了日志文件)。你如何使用你创建的LoggerContext
  • 您好 Piotr,谢谢您的回复,我刚刚解决了,这是我加载配置的方式的问题,只是更改了它,现在它可以工作了!太感谢了。 (我发布了答案,以防万一我可以帮助某人)
  • 您创建的LoggerContext 不是记录器使用的(LogManager.getLogger 获得的)。 LogManager.getLoggercurrent 上下文中查找或创建记录器。

标签: java xml log4j websphere log4j2


【解决方案1】:

如果有人遇到同样的问题,我刚刚解决了。 问题是我加载 xml 配置的方式;我是这样改的:

LoggerContext ctx = getLoggerContext();
ConfigurationSource configurationSource = new ConfigurationSource(new FileInputStream(new File(log4Jcfg)));
ctx.start(ConfigurationFactory.getInstance().getConfiguration(ctx, configurationSource));

现在它完美运行了!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 2017-01-17
  • 2019-01-10
  • 1970-01-01
相关资源
最近更新 更多