log4j.properties或log4j.xml路径问题

来源:互联网 发布:格子分类信息网站源码 编辑:程序博客网 时间:2024/05/20 05:07

自动加载配置文件

(1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解。log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找log4j.properties文件。然后加载配置。配置文件放置位置正确,不用在程序中手动加载log4j配置文件。如果将配置文件放到了config文件夹下,在build Path中设置下就好了。
图1

手动加载配置文件

(1)PropertyConfigurator.configure(“log4j.properties”) 默认读取的是项目根目录的路径。此时的log4j.properties要放在项目目录下。

如图,log4j.properties和src是同级目录,同在根目录下
图2

(2)一般,一个Java项目会有很多的配置文件,建议把所有的配置文件放到一个文件夹下,
例如,放到config文件夹。那么在读取这些配置文件的时候要加上子目录名称。
如图在项目目录下创建config文件夹(注意:不是在src文件下),此时,config和src是同级目录。

图3

这时,读取路径改为:
PropertyConfigurator.configure(“config/log4j.properties”);
(3)项目打成jar包时,一般不会把配置文件也打进jar包。

如果是第一种方式,直接将log4j.properties文件和生成的HelloWorld.jar放在同一目录下,项目就能顺利读取配置文件。

如果是第二种方式,要建立config文件夹,把配置文件放入其中,再将config文件和生成的HelloWorld.jar放在同一目录下,项目就能顺利读取配置文件。

思考:log4j.properties配置文件,配置简单,但不支持复杂过滤器filter,log4j.xml虽然配置文件看似复杂,但支持复杂过滤器和Log4j的新特性。推荐使用log4j.xml


加载log4j.properties文件

1、spring方式加载,配置与web.xml中:

Spring加载log4j.properties,它提供了一个Log4jConfigListener,本身就能通过web.xml配置从指定位置加载log4j配置文件和log4j的输出路径,要注意的是

Log4jConfigListener必须要在Spring的Listener之前。

web.xml

<!-- 设置由Sprng载入的Log4j配置文件位置 --><context-param>    <param-name>log4jConfigLocation</param-name>    <param-value>WEB-INF/classes/log4j.properties</param-value></context-param><!-- Spring刷新Log4j配置文件变动的间隔,单位为毫秒 --><context-param>    <param-name>log4jRefreshInterval</param-name>    <param-value>10000</param-value></context-param><listener>    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener>

2、可以通过资源类对资源文件进行加载,与使用为一体

public class TestLog4j  {    public static void main(String[] args)  {        PropertyConfigurator.configure( "D:/Code/conf/log4j.properties " );        Logger logger = Logger.getLogger(TestLog4j. class );        logger.debug( " debug " );        logger.error( " error " );    } }
原创粉丝点击