×
文章路径: Java

指定log4j配置文件路径

发表于2年前(Apr 13, 2016 2:56:57 PM)  阅读 1193  评论 0

分类: Java

标签: log4j classpath classpath* Log4jConfigListener log4jConfigLocation

log4j是使用频率很高的java日志组件,一般项目中都会在class根目录创建一个log4j.properties配置文件,Spring容器会默认在class根目录中寻找log4j.properties,约定优于配置。但难免存在需要显示指定的情况,这时,我们可以在web.xml中进行如下配置:

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

    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
这里可以看到笔者的配置文件并没有放在class根目录,而是classes下面的log目录里面。

配置文件路径还可以写成 classpath:/log/log4j.properties 这种形式,但是不能写成classpath*:/log/log4j.properties,笔者最开始是加了*号,然后报错,开始以为log4j不支持classpath这种路径格式,最后才发现是*的问题。

classpath*与classpath的区别可以参看一下网上别的文章,简单的来说,不带*只会在你class路径下找,带*不仅class路径,jar包里面的class路径也会找,所以如果你的配置文件存放在jar包中,就可能会用到*了。Spring加载配置文件时大部分都支持classpath*的格式,但暂时发现log4j不支持。不过如没必要确实不要使用classpath*,毕竟我们大部分时候并不需要额外的去扫描jar包里地配置文件。

发表评论