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

log4j 详解

阅读更多
log4j 详解


1.Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)
Loggers(记录器),日志写出器 ,供程序员输出日志信息 ,收集日志信息源数据
Appenders(输出源),就是输出到的地方(文件、控制台)
Layouts(布局),日志信息的布局(输出形式),定义输出格式


工作原理:
1.应用程序调用Loggers输入日志源信息。
2.Loggers查看日志源信息等级,过滤不符合等级的。
3.将日志源信息格式化为Layouts(布局)定义的格式的信息
4.按输出目的地进行格式化后信息的输出。


配置根 Logger ,其语法为:(收集那些级别的信息和定输出的地方有那些)
log4j.rootLogger = [ level ] , appenderName, appenderName, …
1.level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者您定义的级别。 Log4j 建议只使用四个级别 ,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。
2.通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了 INFO 级别,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来 。
3.appenderName 就是指日志信息输出到哪个地方。您可以同时指定多个输出目的地。
如:log4j.rootLogger=info, ServerDailyRollingFile, stdout



配置日志信息输出目的地 Appender ,其语法为:(输出目的地的参数配置)
log4j.appender.appenderName = fully.qualified.name.of.appender.class. 其中, Log4j 提供的 appender 有以下几种:
1.org.apache.log4j.ConsoleAppender (控制台),
2.org.apache.log4j.FileAppender (文件),
3.org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
4.org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个    新的文件)
5.org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
6.选择了其中一种后,还要就每一种选项进行相关参数的配置
如:log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ServerDailyRollingFile.File=C://logs/notify-subscription.log //就选项file进行相关参数的配置(因为输出目的地为file)



配置日志信息的格式(布局),其语法为:(定义输出源的信息格式化)
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
1.org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
2.org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
3.org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
4.org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)
5.选择了其中一种后,还要就每一种选项进行相关参数的配置
如:log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%p] [%c %M %L %F] %m%n



配置多个Logger
1.除了根Logger,不可以定义多个Logger
如:log4j.logger.test = info, stdout //定义一个test logger



log4j的logger继承性
1.子logger会叠加式地继承父logger的所有appender
比如:
log4j.logger.com.test = info, stdout
log4j.logger.com.test.a = info, stdout
结果会导致test.a下的所有日志会在stdout输出两次。



例子:
log4j.properties
log4j.rootLogger=info, ServerDailyRollingFile, stdout
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender

log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd
log4j.appender.ServerDailyRollingFile.File=C://logs/notify-subscription.log

log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%p] [%c %M %L] %m%n

log4j.appender.ServerDailyRollingFile.Append=true

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%p] [ %M %L %F] %m%n

#定个一个logger
log4j.logger.xing=INFO,xing

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

#定个一个xing logger的子logger,以点进行表示继承关系,子logger会叠加式地继承父logger的所有appender
log4j.logger.xing.a=INFO,yong

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



import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogTest {
	public static void main(String[] args) {
		//PropertyConfigurator.configure("D:\\Test\\log4j.properties");
		
		
		PropertyConfigurator.configure("log4j.properties"); //读入参数配置文件,没有配置文件时会有一个默认的配置文件
		//Logger logger = LoggerFactory.getLogger("xing");	//得到xing这个Logger
		Logger logger = LoggerFactory.getLogger("xing.a");	//得到xing.a这个Logger
		//Logger logger = LoggerFactory.getLogger(xing.a.class);
	
		logger.info("log message");
		
		//也可以用
		//org.apache.log4j.Logger logger = LogManager.getLogger("xing.a");	//得到xing.a这个Logger
		//logger.info("log message");
	}
}



参考原文:http://blog.csdn.net/anlina_1984/article/details/5313023
参考原文:http://blog.sina.com.cn/s/blog_5ed94d710101go3u.html
参考原文(配置多个Logger):http://www.cnblogs.com/shenliang123/archive/2012/05/02/2479286.html
参考原文(log4j的logger继承性):http://blog.csdn.net/java_belucky/article/details/22267795
分享到:
评论

相关推荐

    log4j详解(超详细)

    ### Log4j详解:日志记录的全面解析 #### 标题与描述解析: 标题“log4j详解(超详细)”与描述“log4j详解(超详细)”明确指出文章将对Log4j这一日志框架进行深入且详尽的介绍。Log4j作为一款流行的开源日志组件...

    Log4j详解,详细讲解log4j的使用,和原理

    Log4j 详解 Log4j 是一款功能强大的日志记录工具,广泛应用于 Java 应用程序中。它可以帮助开发人员调试和分析程序,记录程序的运行情况,并提供了灵活的配置方式来控制日志的输出。 Log4j 的概念 Log4j 中有三个...

    Log4j详解与实战

    **Log4j详解与实战** Log4j是Java平台上的一个广泛应用的日志框架,由Apache软件基金会开发。它提供了一种灵活、强大的日志记录机制,使得开发者可以在应用程序中轻松地进行日志输出,便于调试、性能分析以及系统...

    log4j详解.pdf

    ### Log4j详解 #### 1. Log4j简介 Log4j是Apache下的一个开源项目,用于实现灵活的日志管理。它可以帮助开发者控制日志信息的输出目的地、格式以及生成过程,这一切都可以通过简单的配置文件来实现,而无需修改...

    Log4j详解

    Log4j详解

    log4j详解.txt

    ### Log4j详解:日志记录的精妙与配置解析 Log4j是Apache软件基金会下的一个开源项目,用于Java应用程序的日志记录。它提供了一种灵活、强大的日志记录框架,可以定制日志级别、格式和输出目标,极大地提高了应用的...

    log4j详解与实战

    ### Log4j详解与实战 #### 一、Log4j简介 Log4j是一个开源的日志框架,由Apache Software Foundation开发。它允许开发者根据等级记录日志信息,并且能够自由控制日志信息输出的目的地(例如:控制台、文件等)。Log...

    Log4j 详解与实战

    ### Log4j 详解与实战 #### 一、Log4j 概述 Log4j 是 Apache 的一个开源项目,它是由 Java 编写的一款功能强大的日志记录工具。Log4j 具备灵活的日志配置能力,允许开发者在运行时动态地控制日志输出的等级、格式...

    log4j详解配置说明

    ### Log4j 配置详解 #### 一、概述 Log4j 是一款非常流行的 Java 日志框架,它提供了一种灵活的日志记录机制。在实际应用中,开发者可以通过简单的配置来实现对日志级别的控制、日志信息的格式化以及日志文件的...

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

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

    1.log4j详解

    ### Log4j详解 #### 输出级别的种类 在Log4j中,日志记录的信息可以根据不同的级别进行筛选。这些级别从高到低分别为:`FATAL`、`ERROR`、`WARN`、`INFO`、`DEBUG`。这些级别的定义如下: - **FATAL**:致命错误...

    Java资料 log4j详解与实战.txt

    在“log4j详解”部分,我们首先会了解到Log4j的核心概念,包括Logger、Appender、Layout和Level。Logger是记录日志的对象,它可以设置不同的级别(如DEBUG、INFO、WARN、ERROR和FATAL),以便控制不同级别的信息输出...

    log4j入门、详解

    **日志框架Log4j详解** 日志框架在软件开发中扮演着至关重要的角色,它提供了记录应用程序运行过程中的各种事件的功能,便于调试、监控和问题排查。Log4j是Apache组织开发的一个开源的日志记录工具,广泛应用于Java...

Global site tag (gtag.js) - Google Analytics