`
wataxi
  • 浏览: 207000 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Log4J深入浅出

    博客分类:
  • java
阅读更多

Log4J......
 
一、前言:
Java的开源项目太多太多了。这种遍地开花的局面绝对赶得上中国五代十国时期的“百家争鸣”、“百花争艳”的繁荣。使用java技术,我们的项目几乎不需要购买有关java支撑开发产品,只需把一个一个开源产品经过架构师的手,合理搭配和拼接,就能做出灵活性佳、性能不错的商业产品来。


无疑, 作为一个流行的日志记录工具,Log4j是java开源项目中最闪亮的环节之一。笔者所见的java项目,十九都采用了Log4j,究其原因,我认为有以下几点:

a)Log4j受大多数web应用服务器的拥护:以我目前所知,tomcat,weblogic,websphere,jboss都支持log4j。

b)快速,功能强大:Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。在速度上,从log4j一开始出现,注重运行的速度就一直放在首位,并且坚持不懈地进行着改进和完善。

c)使用简单、方便:只需要导入一个简单的log4j-1.2.x.jar,然后在程序类的开头写上下面一句private final static Logger log =Logger.getLogger(ClassName.class);

这样你就得到了一个日志对象log,可以轻松往特定目标写日志了。

二、为什么需要Log4j?---项目的调试是log4j产生的内在驱动力

原始的方法是:把信息输出到屏幕(console),利用JDK提供的System.out.println。但是,这样做的坏处是显而易见的:

a)信息的输出不够灵活,并且繁琐。比如,要输出执行处的文件名,行数,当前时间等,println显得很原始。
b)如果要改变输出的内容和格式,需要重新编译源程序。
c)更严重的是,如果程序中有很多的println,会严重的影响程序的性能。

三、Log4j使用的几个关键点?
——根记录器(Logger),输出端(appenders)和布局(layouts)

a)定义根记录器的格式为
log4j.rootLogger = [ level ], appendName1, appendName2, …appendNameN。同一个记录器可有多个输出端。

PS:level的级别(此级别可以自定义,系统默认提供了以下级别)

◆debug//调试信息

◆info//一般信息

◆warn//警告信息

◆error//错误信息

◆fatal//致命错误信息

上面列出的就是所谓log4j的输出级别,log4j建议只使用4个级别,它们从上到下分别为ERROR、WARN、INFO、DEBUG,假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息就不显示了。

b)定义一个appender的输出目的地的格式为
log4j.appender.appenderName = fully.qualified.name.of.appender.class。log4j提供了以下几种常用的输出目的地:
◆org.apache.log4j.ConsoleAppender,将日志信息输出到控制台
◆org.apache.log4j.FileAppender,将日志信息输出到一个文件
◆org.apache.log4j.DailyRollingFileAppender,将日志信息输出到一个,并且每天输出到一个新的日志文件
◆org.apache.log4j.RollingFileAppender,将日志信息输出到一个文件,通过指定文件的的尺寸,当文件大小到达指定尺寸的时候会自动把文件改名,如名为example.log的文件会改名为 example.log.1,同时产生一个新的example.log文件。如果新的文件再次达到指定尺寸,又会自动把文件改名为 example.log.2,同时产生一个example.log文件。依此类推,直到example.log. MaxBackupIndex, MaxBackupIndex的值可在配置文件中定义。
◆org.apache.log4j.WriterAppender,将日志信息以流格式发送到任意指定的地方。
◆org.apache.log4j.jdbc.JDBCAppender,通过JDBC把日志信息输出到数据库中。

c)输出格式(布局)layout
Log4j提供了一下几种布局:

◆org.apache.log4j.HTMLLayout,以HTML表格形式布局
◆org.apache.log4j.PatternLayout,可以灵活地指定布局模式
◆org.apache.log4j.SimpleLayout,包含日志信息的级别和信息字符串


定义一个PatternLayout布局的语句为:

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1} - %m%n


PS: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平台为“\r\n”,Unix平台为“\n”
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生该日志事件的线程名

四、log4j的配置文件——log4j.properties或者log4j.xml
a)有几种方式可以配置Log4J
◆在程序中调用BasicConfigurator.configure()方法;
◆配置放在文件里,通过命令行参数传递文件名字,通过

PropertyConfigurator.configure(args[x])解析并配置;
◆配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;
◆配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。

b)配置文件的初始化:
通过应用服务器完成初始化

通过servlet辅助完成初始化

c)一个log4j.properties文件示例
log4j.rootLogger=INFO, stdout, logfile


log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n


log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=/webserver/specialTraining3/wangzj.log
log4j.appender.logfile.MaxFileSize=51200KB


log4j.appender.logfile.MaxBackupIndex=3
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n


五、用log4j来演练一个例子
Web.xml文件:

version="1.0" encoding="ISO-8859-1"?>

web-app

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">

 

Test

com.webage.servlets.MyServlet

 

Test

/MyServlet

 

MyServlet

 


Log4j.properties文件:

log4j.rootLogger=DEBUG, ROOT


log4j.appender.ROOT=org.apache.log4j.RollingFileAppender

log4j.appender.ROOT.File=E:\wangzj\myapplication.log

log4j.appender.ROOT.MaxFileSize=1000KB


log4j.appender.ROOT.MaxBackupIndex=5

log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout

log4j.appender.ROOT.layout.ConversionPattern=[%d] %t %c %-5p - %m%n

 

ootLogger=DEBUG,CONSOLE,A1,im
log4j.addivity.org.apach


MyModel.java文件:

package com.webage.model;


import org.apache.log4j.Logger;


public class MyModel {

static Logger logger = Logger.getLogger(MyModel.class);;


public void checkValid(String name, String value) throws Exception {

logger.debug("ENTRY");

logger.debug("检查参数: " + name);

if (value == null) {

throw new Exception("缺少参数。");

}

if (value.trim().length() == 0) {

throw new Exception("参数空。");
 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sanshiqiduer/archive/2007/03/08/1524098.aspx

分享到:
评论

相关推荐

    手把手教你使用log4j

    本教程将深入浅出地教你如何有效地利用log4j进行日志管理,包括配置、API使用以及实践中的最佳实践。 首先,理解Log4j的基本概念至关重要。Log4j由三个核心组件构成:Logger(日志器)、Appender(输出端)和Layout...

    Java 日志记录 log4j 最简明教程

    这篇教程将深入浅出地介绍如何使用log4j进行日志记录。 首先,log4j是一个开源的日志记录工具,由Apache软件基金会开发,主要服务于Java应用程序。它的核心组件包括Logger(日志器)、Appender(输出端)和Layout...

    Pro Apache Log4j second edition

    - **深入浅出**:作者通过通俗易懂的语言和丰富的实例帮助读者理解和掌握复杂的概念和技术点。 - **与时俱进**:尽管本书出版于2005年,但其中很多原理仍然适用于现代软件开发环境,具有较高的参考价值。 ### 四、...

    深入浅出MyBatis技术原理与实战 源代码

    MyBatis集成了多种日志框架,如Log4j、Logback等,帮助开发者调试和追踪问题。同时,MyBatis提供了丰富的异常类型,如SqlSessionException、ResultMapException等,用于捕获和处理各种可能出现的问题。 总之,"深入...

    03-05-03-深入浅出SpringBoot的核心原理1

    【深入浅出SpringBoot的核心原理1】 在Spring Boot框架中,Starter扮演着至关重要的角色。Starter可以被视为一个个预封装的模块,它们包含了特定功能所需的所有依赖,并且能够根据运行环境自动配置Bean。比如,当...

    mybatis深入浅出

    《MyBatis 深入浅出》是一本旨在引导初学者从入门到精通的教程,专注于MyBatis这一流行的Java持久层框架。MyBatis是一个优秀的轻量级框架,它解决了传统JDBC中的繁琐代码问题,使得数据库操作更加简便易行。本教程将...

    深入浅出hibernate源代码

    《深入浅出Hibernate源代码》是一本旨在帮助开发者深入了解Hibernate框架源码的教程。Hibernate作为Java领域中的一个著名ORM(对象关系映射)框架,它极大地简化了数据库操作,使得开发者能够更加专注于业务逻辑,而...

    深入浅出mybatis系列

    在`&lt;settings&gt;`标签下,设置`logImpl`为`LOG4J`,确保MyBatis使用Log4j进行日志输出。 `configuration.xml`中的`&lt;environments&gt;`标签定义了不同环境下的数据源和事务管理器。这里,`default="development"`表示默认...

    深入浅出Dubbo,微服务必学

    ### 深入浅出Dubbo,微服务必学 #### 一、Dubbo简介 Dubbo是一款由阿里巴巴开源的分布式服务框架,旨在为开发者提供高性能、透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo的核心功能包括远程通信、...

    Java私塾:Hive Shell 基本操作——深入浅出学Hive

    **Java私塾:深入浅出学Hive——Hive Shell基本操作** 在大数据处理领域,Apache Hive 是一种基于 Hadoop 的数据仓库工具,它允许用户使用 SQL 类似的查询语言(HiveQL)来管理和处理存储在 HDFS 上的大量数据。...

    spring-boot实战PDF 完整版和随书源码.7z

    这本书深入浅出地介绍了如何使用Spring Boot构建高效、简洁的Java应用程序。随书源码提供了丰富的示例,使读者能够通过实际操作加深理解。 Spring Boot是由Pivotal团队开发的用于简化Spring应用初始搭建以及开发...

    技术分析图解

    本资料包“技术分析图解”旨在深入浅出地阐述这一复杂的主题,通过图形化的方式使炒股知识变得更加易懂。 技术分析的核心理念是历史会重演,市场价格反映了所有已知的信息。它主要依赖于图表和各种技术指标,如趋势...

    Tomcat与Java Web开发技术详解(第2版).part4.rar

     本书语言深入浅出、通俗易懂,无论对于java web开发的新手还是行家来说,本书都是精通tomcat和开发java web应用的必备的实用手册。本书还可作为高校相关专业学生学习java web开发的参考书,以及企业java web培训...

    Tomcat与JavaWeb开发技术详解(第二版) 孙卫琴

    本书语言深入浅出、通俗易懂,无论对于Java Web开发的新手还是行家来说,本书都是精通Tomcat和开发Java Web应用的必备的实用手册。本书还可作为高校相关专业学生学习Java Web开发的参考书,以及企业Java Web培训教材...

    Tomcat与Java Web开发技术详解(第2版).part1.rar

     本书语言深入浅出、通俗易懂,无论对于java web开发的新手还是行家来说,本书都是精通tomcat和开发java web应用的必备的实用手册。本书还可作为高校相关专业学生学习java web开发的参考书,以及企业java web培训...

    Tomcat与Java Web开发技术详解(第2版).part5.rar

     本书语言深入浅出、通俗易懂,无论对于java web开发的新手还是行家来说,本书都是精通tomcat和开发java web应用的必备的实用手册。本书还可作为高校相关专业学生学习java web开发的参考书,以及企业java web培训...

    Tomcat与Java Web开发技术详解(第2版).part3.rar

     本书语言深入浅出、通俗易懂,无论对于java web开发的新手还是行家来说,本书都是精通tomcat和开发java web应用的必备的实用手册。本书还可作为高校相关专业学生学习java web开发的参考书,以及企业java web培训...

    Tomcat 与Java web开发技术详解(孙卫琴)

    本书语言深入浅出、通俗易懂,无论对于Java Web开发的新手还是行家来说,本书都是精通Tomcat和开发Java Web应用的必备的实用手册。本书还可作为高校相关专业学生学习Java Web开发的参考书,以及企业Java Web培训教材...

    Tomcat与Java Web开发技术详解 (14-26章源码)孙卫琴

    本书语言深入浅出、通俗易懂,无论对于Java Web开发的新手还是行家来说,本书都是精通Tomcat和开发Java Web应用的必备的实用手册。本书还可作为高校相关专业学生学习Java Web开发的参考书,以及企业Java Web培训教材...

Global site tag (gtag.js) - Google Analytics