0 0

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

大家好,昨天做了一个WEB的LOG4J的示例,但是始终结果没有出来,很郁闷希望大家帮忙看看,问题很妖:

在WEB.XML里的配置是这样的,配置了一个SERVLET初始化加载LOG4J的属性文件,如下:
      <servlet>  
	    <servlet-name>log4j-config-file</servlet-name>  
	    <servlet-class>com.ivision.pms.common.log.Log4jInitServlet</servlet-class>  
	    <init-param>  
	        <param-name>configfile</param-name>  
	        <param-value>/WEB-INF/classes/log4j-config.properties</param-value>  
	    </init-param>  
	    <load-on-startup>1</load-on-startup>  
	</servlet>


SERVLET代码如下:
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"));
	}
}


LOG4J的属性文件内容如下,并将属性文件放在了WebRoot/WEB-INF/classes目录里面:
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



下面是JSP页面:
<%@ 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">
<html>  
<head>  
<link href="style/reg.css" rel="stylesheet" type="text/css">  
<title>测试页面</title>  
</head>  
<body>  
  
<%  
System.out.println("aaaaa");
Logger log = Logger.getLogger("test.jsp");  
log.info("测试日志,哈哈");  
System.out.println("bbbbb");
%>  
  
</body>  
</html>  


运行结果如下:
aaaaa
bbbbb


问题:为什么中间的调试信息没有打印到控制台啊,确是跳过了,并且也不报错。。也没有任何提示。。控制台也没有任何其他的LOG4J的消息。大家帮忙看看了,谢谢了!

问题补充:
下面一楼的朋友回答有点含蓄啊,不明白,但是刚才我又试了试,在我在SERVLET方法里加了个静态块,在JAVAEYE上找了相关问题的帖子都试了试,没有一个成功的,采用的新的方法加载配置文件,另外静态块里输出了一个打印信息:
/************************************************************
 *
 * 项目管理系统【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");
	}
}


控制台在加载的时候,也就是我在启动TOMCAT的时候报的错误信息如下:
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
加载SERVLET


静态块里的消息被打印出来了,证明类是成功被加载的,但是上面LOG4J的错误信息,大家可以看到,他说找不到配置文件,并且后面跟的路径还是什么(org.apache.commons.digester.Digester.sax). 我完全看不懂。。望大家激情指教~
2009年1月13日 10:07

2个答案 按时间排序 按投票排序

0 0

采纳的答案

把这个

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


改成这样:
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


试一下。

2009年1月13日 10:38
0 0

控制台有没有log4j的初始化信息?

2009年1月13日 10:15

相关推荐

    老生常谈Log4j和Log4j2的区别(推荐)

    Log4j只需要引入一个JAR包,即log4j.jar,而Log4j2则需要引入两个核心JAR包,即log4j-core.jar和log4j-api.jar。大家可以发现,Log4j和Log4j2的包路径是不同的,Apache为了区分,包路径都更新了。 文件渲染 Log4j...

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...

    Log4j2简介及与Log4j效率对比

    ### Log4j2简介 Log4j2是Apache软件基金会推出的日志框架,它是Log4j 1.x的重构版本,旨在提供更为高效且灵活的日志解决方案。...对于寻求高性能日志解决方案的应用开发者来说,Log4j2无疑是一个值得考虑的选择。

    logging-log4j2-log4j-2.15.0-rc2.zip maven 资源库

    针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...

    log4j.jar各个版本

    apache-log4j-1.2.15.jar, apache-log4j-extras-1.0.jar, apache-log4j-extras-1.1.jar, apache-log4j.jar, log4j-1.2-api-2.0.2-javadoc.jar, log4j-1.2-api-2.0.2-sources.jar, log4j-1.2-api-2.0.2.jar, log4j-...

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    本文将详细探讨如何通过SLF4J接口来使用Log4j进行日志记录,并展示一个测试代码实例。 **SLF4J简介** SLF4J是一个抽象层,为各种日志框架提供了统一的API,如Logback、Log4j等。它的主要优点在于可以让你在不修改...

    Log4j2学习用到的jar包及apache-log4j-2.19.0-bin.zip

    分别有disruptor-3.3.4.jar(Log4j2异步日志的底层实现)、log4j-api-2.19.0.jar(log4j门面)、log4j-core-2.19.0.jar(log4j实现)、log4j-slf4j-impl-2.19.0.jar(SLF4J与Log4j绑定)、slf4j-api-1.7.30.jar(SLF...

    log4j乱码问题解决办法

    ### log4j乱码问题解决办法 #### 一、引言 在开发过程中,日志记录是必不可少的一个环节。良好的日志系统可以帮助开发者快速定位问题并进行调试。Log4j作为一款广泛使用的Java日志框架,在很多项目中扮演着重要...

    log4j-2.18.0

    近期,一个名为“log4j2”的严重安全漏洞引发了广泛关注,它影响了所有log4j2版本,从2.0开始直到2.18.0版本之前。这个漏洞,通常被称为“Log4Shell”,因其潜在的危害性被业界高度重视,可能允许攻击者远程执行任意...

    Log4j2、Fastjson、Log4j的BurpSuite插件亲测有效

    Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...

    log4j-API-最新稳定版本log4j-1.2.17

    标题提及的是"log4j-API-最新稳定版本log4j-1.2.17",这表明我们关注的是日志框架Log4j的一个特定版本,即1.2.17。Log4j是Apache软件基金会开发的一个用于Java应用程序的日志记录工具,它提供了灵活的日志记录功能,...

    log4j-api-2.12.4.ja和log4j-core-2.12.4.jar

    配置Log4j通常通过一个XML或JSON格式的配置文件完成,例如`log4j2.xml`或`log4j2.json`,这个文件定义了日志的输出级别、目的地(如控制台、文件、数据库等)以及格式。 总的来说,Log4j 2是Java开发中不可或缺的...

    apache-log4j-2.17.0 核心jar包

    Log4j 是一个日志记录框架,Log4j 2 是对 Log4j 的升级,提供了重大改进,超越其前身 Log4j 1.x,并提供许多其它现代功能 ,例如对标记的支持、使用查找的属性替换、lambda 表达式与日志记录时无垃圾等。 Apache ...

    log4j各个版本

    1. Log4j 1.2.6:这是Log4j的一个较早版本,提供了基本的日志记录功能,包括定义不同级别的日志(如DEBUG、INFO、WARN、ERROR和FATAL),以及通过配置文件自定义日志输出格式和目的地(如控制台、文件、SMTP等)。...

    SpringBoot框架配置log4j和log4j2的配置代码

    Log4j是Apache的一个开源项目,用于生成日志。它的核心功能包括定义日志级别(如DEBUG、INFO、WARN、ERROR),配置日志输出目的地(控制台、文件、数据库等),以及自定义日志格式。SpringBoot默认使用的是Logback,...

    SSM整合中的Log4j日志的配置详情

    Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...

    log4j-api-2.17.1.jar和log4j-core-2.17.1.jar

    总的来说,log4j-api-2.17.1.jar和log4j-core-2.17.1.jar是Log4j2的核心组件,它们共同构建了一个强大且可扩展的日志框架。开发者应熟悉这两个库的职责和交互方式,以便充分利用Log4j2的功能,同时确保系统的安全性...

    关于Log4j的Demo

    这个“关于Log4j的Demo”是帮助开发者更好地理解和应用Log4j的一个实例。Log4j不仅提高了代码的可读性和可维护性,还允许开发者根据需要调整日志输出的级别,从而实现不同环境下的日志管理。 **Log4j的基本组件** ...

    log4j示例项目

    在Log4j项目中,通常会有一个`log4j.properties`或`log4j.xml`配置文件,用于定义日志行为。例如: ```properties # log4j.properties 示例 log4j.rootLogger=DEBUG, stdout, FILE log4j.appender.stdout=org....

    log4j jar包

    Log4j-1.2.17是Log4j 1.x系列的一个稳定版本,尽管后续发布了Log4j 2.x,但1.2版仍被许多遗留系统和项目广泛使用。这个版本修复了一些已知的bug,提升了性能和稳定性,同时也兼容了当时的Java环境。 总结,Log4j...

Global site tag (gtag.js) - Google Analytics