Java Log4j2 XML未获取类路径

Java Log4j2 XML未获取类路径,java,xml,log4j,classpath,Java,Xml,Log4j,Classpath,这是我的XML文件 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <configuration> <Appenders> <RollingFile name="MSIFatalFile" fileName="Fatal.log" filePattern="Fatal-%i.log"> <Policies&g

这是我的XML文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration>
    <Appenders>
        <RollingFile name="MSIFatalFile" fileName="Fatal.log" 
            filePattern="Fatal-%i.log">
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
            <PatternLayout pattern="[%d{ISO8601}] %-5level %logger{6} - %msg%n"/>
        </RollingFile>
        <RollingFile name="MSIErrorFile" fileName="Error.log" 
            filePattern="Error-%i.log">
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
            <PatternLayout pattern="[%d{ISO8601}] %-5level %logger{6} - %msg%n"/>
        </RollingFile>
        <RollingFile name="MISFile" fileName="MIS.log" 
            filePattern="MIS-%i.log">
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
            <PatternLayout pattern="[%d{ISO8601}] %-5level %logger{6} - %msg%n"/>
        </RollingFile>
    </Appenders>
    <loggers>
        <logger name="fatalLogger" level="ALL" additivity="false">
            <appender-ref ref="MSIFatalFile" />
        </logger>

        <logger name="errorLogger" level="ALL" additivity="false">
            <appender-ref ref="MSIErrorFile" />
        </logger>

        <logger name="misLogger" level="ALL" additivity="false">
            <appender-ref ref="MISFile" />
        </logger>

    </loggers>

</configuration>

当我把它放在我的源代码级别时,它工作得很好,但当我将它更改为外部目录文件夹时,它不会被解析,文件也不会更新,甚至在创建记录器实例时也不会创建

我通过
System.setproperty(“java.class.path”,path)

但它不起作用。请指出我在这里做错了什么


更新尝试了所有可能的方法,但无法设置驻留在外部文件夹中的xml文件的类路径(或我认为更合适的引用文件)。问题是,当我把它放在项目级时,它所处的环境是怎样的,当我把它放在外部文件夹时,它会怎样

您可以使用
DOMConfigurator.configure(“log4j.xml”)
加载配置文件查看log4j(1)的配置。使用
log4j.configuration
system属性指定初始化文件,并设置
log4j.debug
system属性以获得更多的log4j调试输出。您将在该输出中找到关于log4j初始化阶段的信息

例如:


将xml绑定到任何位置。 可以使用System.setProperty(“log4j.configuration”,xmlpath)


这在我的情况下是有效的。

将您的
外部目录设置为类路径。@CycDemo如何以编程方式执行,我是通过System.SetProperty(“java.class.path”,path)和UrlClassLoader完成的,但它不起作用。因为我把它放在一个外部文件夹中,它不会被重新引用。当我把它放在我的项目级别时,它被引用了。
java -cp C:\myApp\lib\*; -Dlog4j.configuration=C:\myApp\etc\log4j.xml -Dlog4j.debug MyMainClass