HanYaye
2009-01-04 21:02
浏览 413
已采纳

Log4j配置文件路径问题

[color=red]为什么我在做练习的时候。Log4j的配置文件一定要放在工程的根目录下(就是src目录下)。放在其它的地方就不行.[/color]

我在运用当中是用一个Servlet去负责载入Log4j的配置文件。然后就不用在其它地方每次都去加载配置文件。(如我的InitLog4j.java)我在web.xml中配置了这个Servlet。并且给了一个初使化参数--就是log4j配置文件的路径(我没有放在src目录下。但路径是没有错的。否则启动Tomcat5.5进行加载的时候就会报找不到指定文件的异常。)。我让这个Servlet是一启动就自动加载的。如下是我的配置文件的相关信息:


InitLog4j
net.yaye.control.InitLog4j

log4j
/WEB-INF/classes/net/yaye/conf/log4j.properties<!--我放在了一个conf包内,[color=red]路径没有错[/color];如果我把Log4j配置文件放在src根目录下,就不会出错-->

1


InitLog4j
/InitLog4j

但Tomcat启动完毕后。这个Servlet自动加载了。但却报错:
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).
log4j:WARN Please initialize the log4j system properly.
然后我试着在应用程序中获取一个日志对象时,就会警告说没有初使化log4j:
log4j:WARN No appenders could be found for logger (net.yaye.model.LoggerHandler).
log4j:WARN Please initialize the log4j system properly.
[color=red](如果我把Log4j配置文件放在src根目录下,就不会出错)[/color]

[b]问题补充:[/b]
[color=red]我在代码中也指定log4j的配置文件的相对应的路径[/color]
[b]问题补充:[/b]
代码中是这样加载的:
String basepath = getServletContext().getRealPath("/");
String configfile = getInitParameter("log4j");
PropertyConfigurator.configure(basepath+configfile);
[b]问题补充:[/b]
如果我提供的路径不对的话,那Tomcat启动加载的时候就会报FileNotFoundException这个异常了,那我肯定会知道是路径不对拉!
负责加载的代码也执行了,我测试过的.但还是报这个警告错误:
log4j:WARN No appenders could be found for logger (net.yaye.model.LoggerHandler).
log4j:WARN Please initialize the log4j system properly.
[b]问题补充:[/b]
经过我自己的反复试验,我发现一个现象:
  只要你在工程的根目录(src目录)下有一个Log4j的配置文件(里面配置了Appender),即使你不手动去加载这个配置文件(意思就是说你什么前提工作都不用做,也照样可以取得日志记录器!),Log4j也会自动去加载这个配置文件的,但是前提是这个配置文件的名称一定要是log4j.properties这个名字!不知是不是对扩展名也有要求(我没有试过)?不过好象是区分大小的(因为我试过把这个名字的首字母大写了,就不行),反正我试过几个名字,就只有配置文件名为log4j.properties的才会通过。而且这个现象与框架无关,比如:struts、hibernate、spring。当然了,之后你自己再去手动加载也不会错的!
但记住,只要你的工程的根目录(src目录)下没有一个Log4j的配置文件(名叫log4j.properties),Tomcat启动加载应用程序时就会出现警告:
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).
log4j:WARN Please initialize the log4j system properly.
但这个警告对实际上你已有过对log4j的配置文件进行加载的时候根本就是骗人的,因为之后你去获得一个一个日志记录器的时候,就不会出现警告说没有找到Appenders的话,因为你已经加载了嘛,所以这是个幻觉!!

我的理解就到这里,不知还有哪位高手能有更高深的见解。或者指出我的理解错误。
小生在这里抛砖引玉了!
[b]问题补充:[/b]
我说的都是启动Tomcat时出现的信息!!

6条回答 默认 最新

相关推荐 更多相似问题