-
一个非常奇怪的问题关于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个答案 按时间排序 按投票排序
-
采纳的答案
把这个
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
相关推荐
Log4j只需要引入一个JAR包,即log4j.jar,而Log4j2则需要引入两个核心JAR包,即log4j-core.jar和log4j-api.jar。大家可以发现,Log4j和Log4j2的包路径是不同的,Apache为了区分,包路径都更新了。 文件渲染 Log4j...
Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...
### Log4j2简介 Log4j2是Apache软件基金会推出的日志框架,它是Log4j 1.x的重构版本,旨在提供更为高效且灵活的日志解决方案。...对于寻求高性能日志解决方案的应用开发者来说,Log4j2无疑是一个值得考虑的选择。
针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...
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-...
本文将详细探讨如何通过SLF4J接口来使用Log4j进行日志记录,并展示一个测试代码实例。 **SLF4J简介** SLF4J是一个抽象层,为各种日志框架提供了统一的API,如Logback、Log4j等。它的主要优点在于可以让你在不修改...
分别有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作为一款广泛使用的Java日志框架,在很多项目中扮演着重要...
近期,一个名为“log4j2”的严重安全漏洞引发了广泛关注,它影响了所有log4j2版本,从2.0开始直到2.18.0版本之前。这个漏洞,通常被称为“Log4Shell”,因其潜在的危害性被业界高度重视,可能允许攻击者远程执行任意...
Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...
标题提及的是"log4j-API-最新稳定版本log4j-1.2.17",这表明我们关注的是日志框架Log4j的一个特定版本,即1.2.17。Log4j是Apache软件基金会开发的一个用于Java应用程序的日志记录工具,它提供了灵活的日志记录功能,...
配置Log4j通常通过一个XML或JSON格式的配置文件完成,例如`log4j2.xml`或`log4j2.json`,这个文件定义了日志的输出级别、目的地(如控制台、文件、数据库等)以及格式。 总的来说,Log4j 2是Java开发中不可或缺的...
Log4j 是一个日志记录框架,Log4j 2 是对 Log4j 的升级,提供了重大改进,超越其前身 Log4j 1.x,并提供许多其它现代功能 ,例如对标记的支持、使用查找的属性替换、lambda 表达式与日志记录时无垃圾等。 Apache ...
1. Log4j 1.2.6:这是Log4j的一个较早版本,提供了基本的日志记录功能,包括定义不同级别的日志(如DEBUG、INFO、WARN、ERROR和FATAL),以及通过配置文件自定义日志输出格式和目的地(如控制台、文件、SMTP等)。...
Log4j是Apache的一个开源项目,用于生成日志。它的核心功能包括定义日志级别(如DEBUG、INFO、WARN、ERROR),配置日志输出目的地(控制台、文件、数据库等),以及自定义日志格式。SpringBoot默认使用的是Logback,...
Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...
总的来说,log4j-api-2.17.1.jar和log4j-core-2.17.1.jar是Log4j2的核心组件,它们共同构建了一个强大且可扩展的日志框架。开发者应熟悉这两个库的职责和交互方式,以便充分利用Log4j2的功能,同时确保系统的安全性...
这个“关于Log4j的Demo”是帮助开发者更好地理解和应用Log4j的一个实例。Log4j不仅提高了代码的可读性和可维护性,还允许开发者根据需要调整日志输出的级别,从而实现不同环境下的日志管理。 **Log4j的基本组件** ...
在Log4j项目中,通常会有一个`log4j.properties`或`log4j.xml`配置文件,用于定义日志行为。例如: ```properties # log4j.properties 示例 log4j.rootLogger=DEBUG, stdout, FILE log4j.appender.stdout=org....
Log4j-1.2.17是Log4j 1.x系列的一个稳定版本,尽管后续发布了Log4j 2.x,但1.2版仍被许多遗留系统和项目广泛使用。这个版本修复了一些已知的bug,提升了性能和稳定性,同时也兼容了当时的Java环境。 总结,Log4j...