Log4j2 XML没有获取类路径

时间:2014-01-16 07:28:23

标签: 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>
                <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.setProprty("java.class.path", path)

设置了所有jar和xml目录的clsspath

但它没有用。请提出我在这里做错了什么。

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

3 个答案:

答案 0 :(得分:0)

您可以使用DOMConfigurator.configure("log4j.xml")加载配置文件

答案 1 :(得分:0)

查看log4j(1)的Default Initialization Procedure。使用log4j.configuration系统属性指定initilization文件并设置log4j.debug系统属性以获取更多log4j调试输出。您将在该输出中找到有关log4j初始化阶段的信息。

E.g:

java -cp C:\myApp\lib\*; -Dlog4j.configuration=C:\myApp\etc\log4j.xml -Dlog4j.debug MyMainClass

答案 2 :(得分:0)

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

这适用于我的情况。