`

在WEB工程下如何使用LOG4J(转)

    博客分类:
  • Java
阅读更多
最近在做一个项目时用到log在java bean中明明好用可是到了jsp调用java bean时却写不出日志后来发现了一些方法:

Log4J是Jakarta下的一个开源代码的子项目,用Log4J,我们可以使用定制的格式,把调试信息和日志信息输出到一个或多个需要的地方。在Web应用中一般使用一个专门的Servlet来完成Log4J的配置,并保证在web.xml的配置中,这个Servlet位于其它Servlet之前,以便在Servlet和jsp中调用。下面是这个servlet,代码如下:
package example;
import org.apache.log4j.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
     
public class Log4jInit extends HttpServlet {  
       public void init() {
            String prefix =    getServletContext().getRealPath("/");
            String file = getInitParameter("log4j");//配置文件位置
            if(file != null) {   
                PropertyConfigurator.configure(prefix+file);  
            }  
       }

      public void doGet(HttpServletRequest req, HttpServletResponse res)
     {    }
}


此servlet在web.xml中配置:
</web-app>  
...........   
servlet>  
     <servlet-name>log4j-init</servlet-name>  
     <servlet-class>example.Log4jInit</servlet-class>
     <init-param>
        <param-name>log4j</param-name>
        <param-value>WEB-INF/log4j.properties</param-value>
     </init-param>  
     <load-on-startup>1</load-on-startup>
</servlet>
...........   
</web-app>


用来配置log4J的属性文件:
log4j.rootLogger=debug, A1 , R
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=cwblog4j.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n


      这个配置文件指定了两个输出源A1和R。前者把日志信息输出到控制台,后者是一个轮转日志文件。最大的文件是100KB,当一个日志文件达到最大尺寸时, Log4J会自动把example.log重命名为example.log.1,然后重建一个新的example.log文件,依次轮转。 

测试文件:
<%@ page contentType="text/html; charset=GB2312" %>
<%@ page import="org.apache.log4j.*" %>
<%        
      Logger logger = Logger.getLogger("test.jsp");
      logger.debug("befor say hi");
%>
<h1> Hi</h1>
<%    logger.info("after say hi");%>


     在服务器上的$TOMCAT_HOME/log4j.log文件中看到如下的信息:
DEBUG Thread-5 testlog4j.jsp - befor say hi
INFO Thread-5 testlog4j.jsp - after say hi
     在$TOMCAT_HOME/logs/stdout.log文件的最后有下面的输出。
信息: Server startup in 5678 ms
2004-07-07 09:54:05 [testlog4j.jsp]-[DEBUG] befor say hi
2004-07-07 09:54:05 [testlog4j.jsp]-[INFO] after say hi



log4j的ConversionPattern参数的格式含义
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG
#这里定义能显示到的最低级别,若定义到INFO级别,则看不到DEBUG级别的信息了~!
log4j.rootLogger=DEBUG

#将DAO层log记录到DAOLog,allLog中
log4j.logger.DAO=DEBUG,A2,A4
#将逻辑层log记录到BusinessLog,allLog中
log4j.logger.Businesslog=DEBUG,A3,A4

#A1--打印到屏幕上
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p [%t] %37c %3x - %m%n

#A2--打印到文件DAOLog中--专门为DAO层服务
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=DAOLog
log4j.appender.A2.DatePattern='.'yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

#A3--打印到文件BusinessLog中--专门记录逻辑处理层服务log信息
log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.file=BusinessLog
log4j.appender.A3.DatePattern='.'yyyy-MM-dd
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

#A4--打印到文件alllog中--记录所有log信息
log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A4.file=alllog
log4j.appender.A4.DatePattern='.'yyyy-MM-dd
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

#Appender的使用
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=demo
log4j.appender.A2.DatePattern='.'yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%m%n

#Layout的配置
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

ConversionPattern参数的格式含义
格式名 含义
%c 输出日志信息所属的类的全名
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
%f 输出日志信息所属的类的类名
%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生该日志事件的线程名

#1 定义了两个输出端
log4j.rootLogger = INFO, A1, A2,A3

#2 定义A1输出到控制器
log4j.appender.A1 = org.apache.log4j.ConsoleAppender
#3 定义A1的布局模式为PatternLayout
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
#4 定义A1的输出格式
log4j.appender.A1.layout.ConversionPattern = %-4r [%t] %-5p %c - %m%n

#5 定义A2输出到文件
log4j.appender.A2 = org.apache.log4j.RollingFileAppender
#6 定义A2要输出到哪一个文件
log4j.appender.A2.File = F:nepalonclassesexample3.log
#7 定义A2的输出文件的最大长度
log4j.appender.A2.MaxFileSize = 1KB
#8 定义A2的备份文件数
log4j.appender.A2.MaxBackupIndex = 3
#9 定义A2的布局模式为PatternLayout
log4j.appender.A2.layout = org.apache.log4j.PatternLayout
#10 定义A2的输出格式
log4j.appender.A2.layout.ConversionPattern = %d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n
分享到:
评论
2 楼 lel08090 2008-11-03  
能不能把文章下面的内容用例子详细演示一遍?谢谢!
1 楼 BarryWei 2008-10-29  
很好,很强大!

相关推荐

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

    Log4j想要生效,我们需要在web.xml中进行配置,以告诉工程去哪加载log4j的配置文件和定义一个扫描器。相比之下,Log4j2就比较简单,我们只需要把log4j2.xml文件放到工程的resource目录下就行了。 Log调用 Log4j和...

    非web工程使用slf4j输出日志

    下面将详细介绍如何在非Web工程中使用SLF4J进行日志记录。 1. **添加依赖**: 在使用SLF4J之前,首先需要在项目的类路径中包含SLF4J的API jar包以及一个具体的日志实现库,例如Logback或Log4j。在Maven项目中,...

    java project,java web project log4j使用源码

    本资源里面包含了在java project工程下如何使用log4j,在java web工程(servlet和struts2)下如何使用log4j,并且对log4j的加载机制,原理进行了详细的介绍和解释,代码部分也进行了详细的注释,值得你看看。

    web项目log4j简单案例

    本案例将带你了解如何在Web项目中简单集成并使用Log4j,以便更好地进行调试、监控和故障排查。 1. **Log4j介绍**: Log4j是一个开源的Java日志框架,它允许开发者自定义日志级别,控制日志输出的位置、格式和内容...

    log4j实例java工程.zip

    这个“log4j实例java工程.zip”压缩包包含了在一个基于Eclipse、Maven、Spring和SpringMVC的项目中使用Log4j的具体示例。 首先,Eclipse是Java开发常用的集成开发环境(IDE),它提供了一整套工具来帮助编写、调试...

    Log4j中相对路径的问题

    在`web.xml`中,你需要定义这个`Log4jInit`Servlet,并设置初始化参数`log4j`为`WEB-INF/classes/log4j.properties`的路径,这样在Web应用启动时,`Log4jInit`Servlet就会被调用,从而动态设置日志路径。 总结来说...

    Spring版本Log4J的Demo

    本项目"SpringLog4JDemo"将包含一个完整的Eclipse工程,其中展示了如何在Spring环境中配置Log4J,以及如何在代码中使用日志。通过这个项目,你可以学习到如何结合Spring和Log4J进行日志管理,提升应用的可维护性和...

    IDEA下springboot+mybatis+log4j

    【标题】"IDEA下springboot+mybatis+log4j"所涉及的知识点主要集中在Java开发环境的集成、Spring Boot框架的应用、MyBatis持久层框架的使用以及日志管理工具Log4j和SLF4J的配置与实践。 首先,IntelliJ IDEA(简称...

    Log4j自己配置.doc

    接下来,获取Log4j的jar包,如log4j-1.2.14.jar,并将其放置在项目工程的/WEB-INF/lib目录下。在Eclipse或其他IDE中,刷新项目以确保IDE识别到这个库,并将其添加到Java构建路径。 配置Log4j的关键步骤是创建Log4j....

    idea 14 ssm 全注解框架+log4j+事物控制+mybatis基础Dao配置

    通过配置log4j.properties或log4j.xml文件,我们可以设置日志级别(DEBUG、INFO、WARN、ERROR等),选择日志输出目的地(控制台、文件、邮件等),并自定义日志格式。 事务控制在数据库操作中至关重要,确保数据的...

    spring2在web下对log4j的增强

    项目工程 博文链接:https://llying.iteye.com/blog/164754

    Tomcat下HttpServlet的Web应用工程

    【标题】"Tomcat下HttpServlet的Web应用工程"是一个基于Java J2EE技术的Web项目,它在Tomcat7服务器环境下运行。这个项目利用了Eclipse 4.4作为集成开发环境(IDE),展示了如何在Linux操作系统中构建和部署Web应用...

    搭建springMVC+Mybatis+quartz+log4j+maven项目

    搭建一个基于SpringMVC、Mybatis、Quartz、Log4j和Maven的项目涉及到多个技术栈的集成与配置,这是一个常见的Java Web开发框架。以下将详细解释这些技术及其在项目中的作用,以及如何进行集成。 **SpringMVC**: ...

    这是一个Spring+hibernate+log4j的web工程环境.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    mac下mvn搭建web工程

    "Mac 下使用 Maven 搭建 Web 工程" 概述 本文将指导如何使用 Maven 在 Mac 下搭建一个 Web 工程,并介绍 Maven 项目的基本结构和依赖管理。 Maven 项目结构 Maven 项目的基本结构由以下几个部分组成: * `src/...

    springMVC5.1+mybatis3.46+log4j2+dbcp2项目,无论学习和项目搭建适合,含数据库脚本,本人自己搭建可运行。

    这是一个基于SpringMVC 5.1、MyBatis 3.4.6、Log4j2和DBCP2的Web应用程序项目,适用于学习和实际项目搭建。以下将详细阐述这些技术及其在项目中的作用。 首先,SpringMVC是Spring框架的一部分,是一个用于构建Web...

    web工程项目

    项目中可能还涉及了错误处理和日志记录,使用了如try-catch-finally结构来捕获并处理异常,以及Log4j或SLF4J等日志框架记录程序运行过程中的信息,便于调试和问题定位。 总的来说,【web工程项目】是一个综合性的...

    毕业设计:资料管理系统-springboot整合ssm,shiro,log4j.zip

    【标题】"毕业设计:资料管理系统-springboot整合ssm,shiro,log4j.zip"涉及的关键技术点包括SpringBoot、SSM(Spring、SpringMVC、MyBatis)、Shiro以及Log4j,这些都是Java后端开发中的重要组成部分。下面将详细...

Global site tag (gtag.js) - Google Analytics