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文件驻留在外部文件夹。问题是,当我将它放置在项目级别时,它会得到什么样的环境,当我将它放置在外部文件夹时它会如何获得。

+0

将你的'外部目录'设置成类路径。 – CycDemo

+0

@CycDemo如何以编程方式做到这一点,我做了System.setProprty(“java.class.path”,路径)和UrlClassLoader,但它不起作用。当我把它放在一个外部文件夹中时,它不会被清除。当我把它放在我的项目级别时,它就会被引用。 – RTA

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

+0

它不适用于我的情况。 – RTA

看一看的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 
+0

不适合我。 – RTA

+0

@RTA出了什么问题?什么是log4j调试输出? – FrVaBe

绑定XML无论它是。 可以使用System.setProperty(“log4j.configuration”,xmlpath)。

这在我的情况。