liuziting 2009-01-13 10:07
浏览 273
已采纳

一个非常奇怪的问题关于LOG4J的

大家好,昨天做了一个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] 我完全看不懂。。望大家激情指教~

  • 写回答

2条回答 默认 最新

  • 桃片 2009-01-13 10:38
    关注

    把这个
    [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]

    改成这样:
    [code="java"]
    og4j.com.ivision = 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]

    试一下。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致