从 aplication.properties 文件获取 log4j.properties 文件的路径到 web.xml



我正在开发一个 spring-mvc/maven 应用程序,它通过 war 文件部署在 jboss 上。我使用 log4j 将日志插入数据库。这是我的log4j.properties文件.
的片段

log4j.rootLogger=ERROR, CONSOLE
log4j.logger.com.ge.epay.web.controller=INFO
log4j.logger.com.ge=ERROR
log4j.logger.org.springframework=ERROR
log4j.logger.org.acegisecurity=ERROR
log4j.logger.org.apache=ERROR
log4j.logger.java.sql=ERROR
log4j.logger.org.mybatis=ERROR
log4j.logger.com.mchange=ERROR

我想将日志级别从错误更改为调试,而无需在 log4j.properties 中进行更改后重新部署应用程序。
所以我在战争之外保留了log4j.properties文件,并在我的web.xml中使用了Log4jConfigListener。下面是我的网络.xml文件的片段。

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>file:/some path</param-value>  
</context-param>
<context-param>
<param-name>log4jExposeWebAppRoot</param-name>
<param-value>false</param-value>
</context-param>
<!-- Time interval in millisecond after which the log4j properties will 
be refreshed from the external file -->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>1200000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>


如您所见,我正在我的 web 中定义 log4j.properies 文件的路径.xml它本身为 log4jConfigLocation 参数.
我希望在 application.properties 文件或 environment.properties 文件中定义这个位置。
是否可以从属性文件中获取位置并在 web.xml 中使用它?
将 log4j.properties 文件保存在战争之外并从应用程序中读取它是否安全?
提前谢谢你。

日志属性倾向于从类路径中读取,因此将属性文件的位置设置为类路径可能是您的解决方案

@waquar我很晚了。但希望答案对初学者有用。

您可以使用表达式语言来提及 log4j 文件的路径,如下所示:

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>file:#{systemProperties['user.home']}/somepath/log4j.properties</param-value>  
</context-param>

最新更新