Log4j2 XML没有得到类路径
问题描述:
这是我的XML文件Log4j2 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>
,当我把这个在我的源代码级的它工作正常,但是当我改变了它的外部目录文件夹,它没有解决和文件中在创建记录器实例时不更新甚至不创建。
我把所有jar和xml目录的clsspath通过System.setProprty("java.class.path", path)
,但我以前不工作。请提出我在这里做错了什么。
更新尝试所有可能的方式,但无法设置类路径(或参考文件更适合我认为)xml文件驻留在外部文件夹。问题是,当我将它放置在项目级别时,它会得到什么样的环境,当我将它放置在外部文件夹时它会如何获得。
答
看一看的log4j的Default Initialization Procedure(1)。使用log4j.configuration
系统属性来指定启动文件并设置log4j.debug
系统属性以获得更多log4j调试输出。您将在该输出中找到有关log4j初始化阶段的信息。
例如为:
java -cp C:\myApp\lib\*; -Dlog4j.configuration=C:\myApp\etc\log4j.xml -Dlog4j.debug MyMainClass
答
绑定XML无论它是。 可以使用System.setProperty(“log4j.configuration”,xmlpath)。
这在我的情况。
将你的'外部目录'设置成类路径。 – CycDemo
@CycDemo如何以编程方式做到这一点,我做了System.setProprty(“java.class.path”,路径)和UrlClassLoader,但它不起作用。当我把它放在一个外部文件夹中时,它不会被清除。当我把它放在我的项目级别时,它就会被引用。 – RTA