大家好,昨天做了一个WEB的LOG4J的示例,但是始终结果没有出来,很郁闷希望大家帮忙看看,问题很妖:
在WEB.XML里的配置是这样的,配置了一个SERVLET初始化加载LOG4J的属性文件,如下:
[code="xml"]
log4j-config-file
com.ivision.pms.common.log.Log4jInitServlet
configfile
/WEB-INF/classes/log4j-config.properties
1
[/code]
SERVLET代码如下:
[code="java"]
package com.ivision.pms.common.log;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;
public class Log4jInitServlet extends HttpServlet
{
public void service(ServletRequest req, ServletResponse resp)
throws ServletException, IOException
{
}
public void init() throws ServletException
{
System.setProperty("WebAppRoot", getServletContext().getRealPath("/"));
PropertyConfigurator.configure(getServletContext().getRealPath("/") + getInitParameter("configfile"));
}
}
[/code]
LOG4J的属性文件内容如下,并将属性文件放在了WebRoot/WEB-INF/classes目录里面:
[code="java"]
og4j.rootLogger = DEBUG, A1
log4j.appender.A1 = org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern = %-4r [%t] %-5p %c %x - %m%n
[/code]
下面是JSP页面:
[code="java"]
<%@ page language="java" import="java.util.*,org.apache.log4j.Logger" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
测试页面
<%
System.out.println("aaaaa");
Logger log = Logger.getLogger("test.jsp");
log.info("测试日志,哈哈");
System.out.println("bbbbb");
%>
[/code]
运行结果如下:
[code="java"]
aaaaa
bbbbb
[/code]
问题:为什么中间的调试信息没有打印到控制台啊,确是跳过了,并且也不报错。。也没有任何提示。。控制台也没有任何其他的LOG4J的消息。大家帮忙看看了,谢谢了!
[b]问题补充:[/b]
下面一楼的朋友回答有点含蓄啊,不明白,但是刚才我又试了试,在我在SERVLET方法里加了个静态块,在JAVAEYE上找了相关问题的帖子都试了试,没有一个成功的,采用的新的方法加载配置文件,另外静态块里输出了一个打印信息:
[code="java"]
/************************************************************
*
- 项目管理系统【PMS】
- 【文件:初始化log4j的相关配置信息】
- Log4jInitServlet.java *
- 作成者: 李军
- Version 1.0
- Release 1
- 改版日 09/01/12
- 改版履歴
- 2009/01/12 新規作成 **************************************************************/
package com.ivision.pms.common.log;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;
public class Log4jInitServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
public void service(ServletRequest req, ServletResponse resp)
throws ServletException, IOException
{
}
public void init(ServletConfig config) throws ServletException
{
super.init(config);
String fileSep = System.getProperty("file.separator");
String prefix = getServletContext().getRealPath(fileSep) + fileSep;
String initfileName = getInitParameter("configfile");
FileInputStream fis;
Properties prop = new Properties();
try
{
fis = new FileInputStream(prefix + initfileName);
prop.load(fis);
String logfileName = prop.getProperty("log4j.appender.A1.file");
prop.put("log4j.appender.A1.file", prefix + logfileName);
if (initfileName != null)
{
PropertyConfigurator.configure(prop);
}
fis.close();
}
catch (FileNotFoundException e)
{
System.out.println(e);
}
catch (IOException e)
{
System.out.println(e);
}
}
static
{
//输出打印信息,看看类有没有被加载,并且我单步都跟进来了
System.out.println("加载SERVLET");
}
}
[/code]
控制台在加载的时候,也就是我在启动TOMCAT的时候报的错误信息如下:
[code="java"]
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
加载SERVLET
[/code]
静态块里的消息被打印出来了,证明类是成功被加载的,但是上面LOG4J的错误信息,大家可以看到,他说找不到配置文件,并且后面跟的路径还是什么color=red.[/color] 我完全看不懂。。望大家激情指教~