log4j - 从 war 外部加载 Log4j.xml

标签 log4j

在我的应用程序中,我使用 Log4j 进行日志记录。目前我将 log4j.xml 放在 WEB-INF/classes 中。
下面是我用来加载 log4j.xml 文件的配置。

<!-- language: xml -->

    <context-param>
          <param-name>log4jConfigLocation</param-name>
         <param-value>/WEB-INF/classes/log4j.xml</param-value>
    </context-param>

    <listener>
       <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener> 

现在我需要将 log4j.xml 文件放在我的 war 文件之外。该位置很可能是 JBOSS_HOME/server/default/deploy/settings。在设置目录中,我需要放置我的 log4j.xml。

我尝试通过编辑 run.bat 设置 jboss 类路径来加载它,如下所示
set JBOSS_CLASSPATH=%RUN_CLASSPATH%;%JBOSS_HOME%\server\default\deploy\settings
我在 web.xml 下面使用
<!-- language: xml -->

    <context-param>
            <param-name>log4jConfigLocation</param-name>
            <param-value>classpath:/log4j.xml</param-value>  
    </context-param>

    <listener>
            <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener> 

但是它在部署应用程序时抛出异常。异常(exception)是java.lang.IllegalArgumentException: Invalid 'log4jConfigLocation' parameter: class path resource [/log4j.xml] cannot be resolved to URL because it does not exist
现在我的问题是如何加载它。

最佳答案

您可以像这样简单地声明 log4j 配置的位置:

<context-param>
      <param-name>log4jConfigLocation</param-name>
     <param-value>${JBOSS_HOME}/server/default/deploy/settings/log4j.xml</param-value>
</context-param>

关于log4j - 从 war 外部加载 Log4j.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4024361/

相关文章:

类 pat 上的 java.lang.IllegalStateException : Detected both log4j-over-slf4j. jar 和 slf4j-log4j12.jar

json - LOG4J2:如何在属性文件中配置 JSON 布局

java - 通过电子邮件报告应用程序错误

java - 如何防止 log4j 日志被重定向到根记录器

java - 在 persistence.xml 中禁用 hibernate jpa 日志

java - 配置 Log4j 属性路径的最佳实践

java - 为什么我在日志文件中看不到 log4j 结果?

java - Log4J 不创建许多日志文件之一

java - Maven 项目中的 log4j2 配置问题

logging - Logback 生产准备好了吗?