当前位置: 首页 > 知识库问答 >
问题:

错误状态记录器重新配置失败:在null中的null处找不到'73d16e93'的配置

诸龙野
2023-03-14

我使用的是log4j2,jar文件如下:log4j-api-2.14.0。jarlog4j-core-2.14.0。jarlog4j-slf4j-impl-2.14.0。罐子

执行以下行:LogManager。getLogger(“com.foo.Bar1”);

使用以下VM参数:-Dlog4j。配置=test1。xml

配置文件test1。xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console1" target="SYSTEM_OUT">
            <PatternLayout
                pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <File name="MyFile" fileName="test1.txt">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
        </File>
    </Appenders>
    <Loggers>
        <Logger name="com.foo.Bar1" level="trace">
            <AppenderRef ref="Console1" />
            <AppenderRef ref="MyFile" />
        </Logger>
    </Loggers>
</Configuration>

当java文件启动错误状态记录器重新配置失败时,会发生以下错误:在“null”中的“null”处未找到“73d16e93”的配置

我理解“-Dlog4j.configuration=test1.xml”是错误的。“-Dlog4j.configurationFile=test1.xml”正确。但是我不明白为什么在使用“-Dlog4j.configuration=test1.xml”时会出现错误。

为什么使用-Dlog4j.configuration=test1.xml时发生错误。

共有2个答案

孟璞
2023-03-14

Log4j 2对Log4j 1.2配置文件提供了实验性支持。如果指定-Dlog4j。然后,Log4j的ConfigurationFactory假设您希望在兼容模式下运行,并在Log4j 1中查找配置文件。x格式。如果您提供了一个Log4j2格式的文件,那么显然会失败,特别是如果您的项目中没有log4j-1.2-api,因为log4j 1的配置类就在这里。x XML配置文件是。

乐正涵意
2023-03-14

这是因为log4j.configuration期望文件位于类路径中,而log4j.configurationFile期望它作为文件路径。

如果添加-Dlog4j2。debug=true对于VM参数,您可以看到它正在尝试加载哪个文件并将打印其路径。这样,您就可以知道错误发生的原因。

 类似资料: