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

时间:2017-08-09 11:26:37

标签: java spring spring-mvc log4

我正在开发一个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

我希望将日志级别从ERROR更改为DEBUG,而无需在log4j.properties中进行更改后重新部署应用程序。
所以我将log4j.properties文件保留在战争之外,并在我的web.xml中使用了Log4jConfigListener。下面是我的web.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.xml中将log4j.properies文件的路径定义为log4jConfigLocation参数。
我想在application.properties文件或environment.properties文件中定义此位置。
是否可以从属性文件中获取位置并在web.xml中使用它? 将log4j.properties文件保留在战争之外并从应用程序读取它是否安全? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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