有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java log4j2创建空日志文件

我对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还是加载配置的java代码

WebSphereV9也是一个项目。0

非常感谢你


共 (1) 个答案

  1. # 1 楼答案

    如果有人有同样的问题,我已经解决了。 问题是我加载xml配置的方式;我把它改成这样:

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

    现在它工作得很完美