`
brofe
  • 浏览: 233152 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Log4j 学习笔记

    博客分类:
  • Util
阅读更多
使用Log4j进行日志操作,简单笔记

Log4j简介:
Log4j是Apache的一个开放源代码项目,通过使用Log4j可以将日志信息输出到:文件、OutputStearn、java.io.Writer、远程Log4j服务器和远程Unix Syslog守护线程以及NT事件记录器。并且可以控制输出日志的格式。

在使用log4j的时候需要导入: log4j-1.2.8.jar或者log4j-1.2.9.jar

组成Log4j的基本组件(Logger、 Appender、 Layout):
1: Logger组件(记录器组件):
Logger组件负责产生日志,能够对日志进行筛选,控制什么样的日志可以被输出,什么样的日志应该被忽略。
程序员可以定义多个Logger组件,每个Logger组件都有唯一的名字,logger组件之间通过名字来表明Logger组件之间的隶属关系。
最高层次的Logger组件是:org.apache.log4j.Logger类中。使用此类中的静态方法:getRootLogger()来得到它。
Logger组件中最重要的一个属性——日志级别,
一共有5种可能的级别,升序排列为:DEBUG, INFO, WARN, ERROR, FATAL(都在org.apache.log4j.Level类中定义)
日志级别的作用:当程序编写完成以后当不再需要调式信息时,将日志级别调到最高即可

2:Appender组件:
在Log4j中,日志信息通过Appender组件输出到目的地,一个Appender实例就代表了一个目的地。一个记录器(Logger)可以拥有多个Appender
Appender的种类(4):
org.apache.log4j.ConsoleAppender: 控制台
org.apache.log4j.FileAppender: 指定的文件
org.apache.log4j.DailRollingFileAppender: 按照指定的日期或时间频率滚动产生日志文件
org.apache.log4j.RollingFileAppender: 当文件到达一定长度时,备份文件
每一个Appender都一个继承标记,用户决定记录器(Logger)是否可以继承其父记录器的Appender, 可以通过Logger类的setAddititivity(boolean)来设置(default=true)。对于Appender的继承,是一种叠加性继承。(在使用Appender的继承时,要尽量避免重复叠加的情况)。

3:Layout组件:
Layout组件负责格式化输出日志信息,一个Appender只能有一个Layout组件。
Layout组件的种类(5):
org.apache.log4j.SimpleLayout:由日志级别 + “-” + 消息 组成 例如:DEBUG – 错误
org.apache.log4j.HTMLLayout: 以HTML网页表格的形式输出日志信息(.html)
org.apache.log4j.xml.XMLLayout: 由一系列在log4j.dtd中定义的<log4j:event>元素组成
org.apache.log4j.TTCCLayout: 由时间(time),线程(thread), 类别(category), 和嵌套的上下文(context)信息组成。(TTCC有上述四个英文单词组成)(.log)
org.apache.log4j.PatternLayout: 程序员根据一系列的格式化标签,类似C中的printf()函数的输出


使用Log4j的基本步骤(总是采用以下三个步骤):
1:得到日志记录器(Logger)
log4j.rootLogger = INFO,console
log4j.logger.BrofeLogger = ,file
private static Logger logger = Logger.getRootLogger(); //: 得到根记录器组件
    private static Logger brofeLogger = Logger.getLogger("BrofeLogger"); //: 得到自定义记录器

2: 读取配置文件
读取配置文件主要是得到Log4j的运行环境(也可以用程序来配置Log4j的配置环境但配置文件更灵活)。目前配置文件可以有两种形式:key=value的java属性格式文件,一种是XML文件。
Log4j运行时不对运行环境不做任何假定,特别是没有默认的Appender。在程序中设置Log4j的三种方法:
BasicConfigurator.configure():
创建一个简单的Log4j的配置。这个方法为根记录器(Logger)添加一个
ConsoleAppender的实例,输出的信息用PatternLayout的格式输出日志信息。并设置了根记录器的日志级别为:DEBUG.

PropertyConfigurator.configure(String propertyName/ Proterties prop):
使用java的属性文件配置Log4j的运行环境

DOMConfigurator.configure(String fileName): //: ServletURL + configFileName
使用XML文件配置Log4j的运行环境,xxx.dtd

在配置文件中配置基本的Log4j组件:
1:Logger组件:# xxxxxxxxx 注释  (.properties)(org.apache.log4j.Level)
log4j.rootLogger = [level], [appenderName1,/appenderName2/appenderName3]……
log4j.logger.[loggerName] = [level], [appenderName1/appenderName2/]…..
2:Appender组件:
log4j.appender.[appenderName]=org.apache.log4j.ConsoleAppender/FileAppender/
DailyRollingFileAppender/RollinFileAppender
3:Layout组件:
log4j.appender.[appenderName].layout= org.apache.log4j.SimpleLayout/HTMLLayout/XMLLayout/TTCCLayout/
PatternLayout

3:插入记录的语句:
Logger.debug(“”)/info(“”)/warn(“”)/error(“”)/fatal(“”)







NDC/MDC:
在Web应用中是一个基于多线程的应用,为类标识每个客户端产生的日志信息,故采用:NDC、MDC模式来解决:
当进入一个环境时调用NDC.push(String guestName), MDC.put(Object key, String value);
         离开一个环境时调用NDC.pop(), MDC.get(Object key);
离开一个线程时调用:NDC.remove(), MDC.remove(Object key);
log4j.appender.simple.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%x]  [%c]-[%-5p] %m%n%n
NDC: [%x] 输出 guestName
MDC:[%x]{Object key} 输出对应key的value

简单的Demo:

log4j.properties
## 简单的log4j的配置文件

## 配置根记录器的日志级别为:INFO,渲染器Appender的名字为:console
log4j.rootLogger = INFO, console, htmlfile

## 配置根记录器, 名为 console 的 Appender组件和Layout组件
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.SimpleLayout

## 配置根记录器, 名为 htmlfile 的Appender组件和Layout组件
log4j.appender.htmlfile = org.apache.log4j.FileAppender
log4j.appender.htmlfile.File = log.html
log4j.appender.htmlfile.layout = org.apache.log4j.HTMLLayout



import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Appender;
import org.apache.log4j.Logger;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.RollingFileAppender;
import org.apache.log4j.Level;

import java.util.Properties;
/**
 * Function: 测试使用简单的Log4j
 * Date: 2007-11-23
 * Author: brofe
 */
public class TestLog4j {
	
	private static final String LOG4J_PATH = "log4j.properties";
	
	//: 使用根记录器
	private static Logger rootLogger = Logger.getRootLogger();
	
	static {
		Properties props = new Properties();
		
		try {
			props.load(TestLog4j.class.getResourceAsStream(LOG4J_PATH));
	    }catch (Exception ex) {
	    	ex.printStackTrace();
	    }
		
		//: 加载配置文件
		org.apache.log4j.PropertyConfigurator.configure(props);
	}
	
	public TestLog4j () {
		try {
			int i = 0;
			i = 9/0;
	    }catch (Exception ex) {
	    	rootLogger.info("info msg...aaaaaaaaaaaa", ex);
	    	
	    }
	}
	
	public static void main(String[] args) {
    	new TestLog4j();
    }
}


稍微复杂一点的log4j的配置文件
#根记录器的日志级别是ERROR, 在这个级别一下的级别都将被忽略
#为根记录器指定名为:console的控制器(Appender)
#日志级别有:DEBUG, INFO, WARE, ERROR, FATAL

log4j.rootLogger = INFO,console

log4j.logger.BrofeLogger = ,file
log4j.logger.BrofeLogger = ,log

#设置BrofeLogger记录器的叠加性标签为false
log4j.additivity.BrofeLogger = true

log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d{yyyy-MM-dd HH:mmm:ss} [%c]-[%-5p] %m%n%n

## file appender
log4j.appender.file = org.apache.log4j.FileAppender
log4j.appender.file.File = E:/PRJ/JSP/NetGoProject/Log_Msg/logger.html
log4j.appender.file.layout = org.apache.log4j.HTMLLayout
log4j.appender.file.layout.LocationInfo=true

## log appender
log4j.appender.log = org.apache.log4j.RollingFileAppender
log4j.appender.log.MaxFile.Size = 1MB
log4j.appender.log.MaxBackupIndex = 2
log4j.appender.log.File = E:/PRJ/JSP/NetGoProject/Log_Msg/log.log
log4j.appender.log.layout = org.apache.log4j.PatternLayout
log4j.appender.log.layout.ConversionPattern = %d{yyyy-MM-dd HH:mmm:ss} [%c]-[%-5p] %m%n%n
分享到:
评论
1 楼 glamey 2008-07-30  
挺好的,我一直 用log4j。感觉不错。

相关推荐

    log4J学习笔记

    ### log4J学习笔记 #### 一、Apache Commons Logging与log4j及JDK Logger的关系 **Apache Commons Logging** 的设计初衷是为了提供一个简洁统一的日志接口,它并不直接实现日志功能,而是通过桥接的方式支持多种...

    log4j 学习笔记

    "log4j 学习笔记" log4j 是一个流行的 Java 日志记录工具, logger 是记录日志信息的基本单元。在 log4j 中, logger 的级别越低,记录的日志信息越详细。 Logger 的级别从低到高依次是:ALL 。 log4j 的日志记录...

    Log4j学习笔记和一套完整定义实例

    **Log4j学习笔记** Log4j是一款广泛应用于Java编程中的日志记录框架,由Apache软件基金会开发。它提供了一套灵活的日志记录系统,帮助开发者在开发过程中追踪应用程序的行为,便于调试、性能分析和问题排查。Log4j...

    log4j 学习 笔记

    ### Log4j 学习笔记知识点详解 #### 一、Log4j 概述与架构 **Log4j** 是 **Apache** 组织提供的一个开源日志框架,旨在简化应用开发中的日志记录工作。它能够灵活地记录程序运行时的信息,并允许用户自定义日志的...

    Log4J学习笔记

    ### Log4J学习笔记 #### 一、Log4J配置文件的学习 在深入理解Log4J之前,我们先从配置文件入手。Log4J支持多种配置文件格式,其中包括XML和Java特性文件(键=值)。这里我们将重点介绍如何使用Java特性文件作为...

    Log4j学习笔记

    ### Log4j学习笔记 #### 一、Log4j简介 Log4j是Apache的一个开源项目,用于实现日志功能的Java库。它允许开发者控制日志信息的生成、格式和输出目标。Log4j的强大之处在于它的灵活性和扩展性,能够适应不同层次的...

    日志管理Log4j学习笔记

    ### Log4j学习笔记知识点详解 #### 一、Log4j概述 - **定义与功能**:Log4j是Apache组织推出的一个开源日志框架,主要用于控制和管理应用程序中的日志记录过程。它允许开发者非常灵活地配置日志输出的目的地(如...

    log4j学习笔记

    **Log4j 简介** Log4j 是一个广泛使用的开源日志记录框架,由 Apache 软件基金会开发。它为Java应用程序提供了一种灵活的日志记录机制,允许开发者控制日志信息的输出级别、输出目的地以及输出格式。由于其强大的...

    log4j学习笔记及写入数据库配置

    在学习Log4j的过程中,阅读“log4j学习笔记及写入数据库配置”这份资料将有助于深入理解Log4j的使用,包括具体的配置步骤、常见问题以及最佳实践。通过实践,你可以更好地掌握如何利用Log4j来提升你的应用程序的可...

    Log4j学习笔记,个人整理

    Log4j学习笔记 在软件开发中,日志记录是一个至关重要的部分,它不仅帮助开发者监控程序运行状态,追踪错误,还可以为系统维护提供宝贵的审计信息。Log4j,一个由Apache开发的Java日志框架,是日志记录工具中的佼佼...

    Log4j的学习笔记

    **Log4j学习笔记** Log4j是一款广泛应用于Java编程中的日志记录工具,由Apache软件基金会开发。它提供了一种灵活且强大的机制来记录应用的运行情况,这对于调试、性能分析、问题追踪以及系统监控至关重要。这篇学习...

    Log4j 学习笔记.doc

    Log4j 是一款广泛使用的日志记录框架,它允许开发者以高效、灵活的方式记录应用程序的日志信息。在本文中,我们将深入...在学习过程中,参考官方文档和其他开发者的经验分享,可以进一步提升对Log4j的理解和应用能力。

    不错的 log4j 学习 笔记

    log4j的学习笔记,网上找到的,写的很不错

    log4j学习笔记.

    例如,`log4j.appender.stdout=org.apache.log4j.ConsoleAppender`指定了一个控制台输出器,而`log4j.appender.R=org.apache.log4j.RollingFileAppender`则指定了一个滚动文件输出器,用于当文件大小达到指定尺寸时...

    *Log4j 学习笔记

    Log4j 是一个广泛使用的 Java 日志框架,它允许开发者方便地记录应用程序的日志信息。这个框架的核心组件包括 Logger、Appender 和 Layout,它们协同工作以实现灵活的日志管理。 1. **Logger** - 日志写出器 ...

    log4j的学习笔记

    **Apache Log4j 学习笔记** Apache Log4j 是一个广泛使用的开源日志记录框架,主要用于Java应用程序。它的核心功能是提供灵活的日志记录控制,帮助开发者在开发过程中跟踪和记录程序运行时的事件,从而提高调试效率...

    Apache_Log4j_学习笔记

    ### Apache Log4j 学习笔记精要 #### 一、Apache Log4j 概览 **Apache Log4j** 是一款开源的日志框架,由Apache软件基金会所提供,旨在简化Java应用程序中的日志记录过程。它允许开发者在代码中加入日志记录功能,...

    Log4j入门学习笔记

    【Log4j入门学习笔记】 Log4j是一个广泛使用的Java日志框架,旨在解决程序开发中日志记录的复杂性和可维护性问题。它提供了一种灵活的方式来控制日志信息的输出格式、输出级别和输出位置,使得在调试、监控和故障...

Global site tag (gtag.js) - Google Analytics