指定log4j配置文件路径
发表于7年前(Apr 13, 2016 2:56:57 PM)  阅读 3288  评论 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包里地配置文件。