log4j配置文件读取不到的问题

confirmAname 2014-04-13 08:46:00

web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<servlet>
<servlet-name>InitLog4jServlet</servlet-name>
<servlet-class>com.InitLog4jServlet</servlet-class>
<init-param>
<param-name>log4jLocation</param-name>
<param-value>WEB-INF\log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

</web-app>

InitLog4jServlet.java:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.log4j.PropertyConfigurator;

/**
*@author
*@date 2014-4-13
*/
public class InitLog4jServlet extends HttpServlet {

public void init() throws ServletException {
String path=this.getServletContext().getRealPath("/");
String log4jPath=path+this.getInitParameter("log4jLocation");
System.out.println(log4jPath);
PropertyConfigurator.configure(log4jPath);
}

}

Test.java:
import org.apache.log4j.Logger;

/**
*@author
*@date 2014-4-13
*/
public class Test {

private static final Logger logger=Logger.getLogger(Test.class);

public static void main(String[] args) {

logger.debug("debug");
logger.info("info");
logger.warn("warn");
logger.error("error");
logger.fatal("fatal");
}

}

将项目部署到tomcat上,开启服务器,InitLog4jServlet的init方法里打印出的log4j.properties路径完全正确,但是执行Test类的main方法时提示:

求解,到底哪里错了?实在不明白
...全文
373 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kanorl 2014-04-13
应该放在src目录下
  • 打赏
  • 举报
回复
licip 2014-04-13
你把log4j.properties放在src下面,在web.xml中不需要配置,就可以认到了。
  • 打赏
  • 举报
回复
卢艳亮 2014-04-13
启动WEB服务器后,首先服务器去web.xml中加载数据,完成初始化配置,而你的测试类是一个java 应用程序,不会去读web.xml下面的内容,所以会报错
  • 打赏
  • 举报
回复
发帖
Java EE
加入

6.7w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
申请成为版主
帖子事件
创建了帖子
2014-04-13 08:46
社区公告
暂无公告