Log4j 有三个主要的组件: Loggers , Appenders 和 Layouts ,即日志类别,日志要输出的地方和日志以何种形式输出。
http://blog.csdn.net/lenhan12345/archive/2006/12/22/1453207.aspx
1 、 Loggers
Loggers 组件在此系统中被分为六个级别: TRACE 、 DEBUG 、 INFO 、 WARN 、 ERROR 和 FATAL
2 、 Appenders
Log4j 日志系统允许把日志输出到不同的地方,如控制台( Console )、文件( Files )、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。
其语法表示为:
org.apache.log4j.ConsoleAppender (控制台)
org.apache.log4j.FileAppender (文件)
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
org.apache.log4j.RollingFileAppender (文件大小到指定尺寸时产生一个新的文件)
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
3 、 Layouts
Log4j 可以在 Appenders 的后面附加 Layouts 来完成这个功能。 Layouts 提供了四种日志输出样式,如根据 HTML 样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。
其语法表示为:
org.apache.log4j.HTMLLayout (以 HTML 表格形式布局)
org.apache.log4j.PatternLayout (可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)
在实际编程时,要使 Log4j 真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对 Logger 、 Appender 及 Layout 的分别使用,具体如下:
1 、 配置根 Logger ,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
level 指 Logger 的优先级,
appenderName 是日志信息的输出地,可以同时指定多个输出地。
如: log4j.rootLogger= INFO,A1,A2
2 、 配置日志信息输出目的地 ,其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
可以指定上述五个目的地中的一个。
3 、 配置日志信息的格式 ,其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
下面给出一个具体配置例子,在程序中可以参照执行:
log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=
%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
这里需要说明的就是日志信息格式中几个符号所代表的含义:
- X 号 : X 信息输出时左对齐;
%p: 日志信息级别
%c: 日志信息所在地(类名),通常就是所在类的全名
%m: 产生的日志具体信息
%n: 输出日志信息换行, Windows 平台为“ \r\n ”, Unix 平台为“ \n ”
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%t 输出产生该日志事件的线程名
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
以下对各域作一下解释:
1)%r输出程序开始执行之后的微秒数
2)%t输出当前线程的名称
3)%-5p输出消息的层次。
4)%c 输出category的名称
5)-%m及s是日志消息本身,%n是换行符。
当前在模式字符串中你可以嵌入任何想要输出的字符。
模式字符串中的模式如下:
%m:消息本身
%p:消息的层次
%r:从程序开始执行到当前日志产生时的时间间隔(微秒)
%c:输出当前日志动作所在的category名称。例如:如果category名称是a.b.c,%c{2}将会输出b.c. {2}意谓着输出“以点分隔开的category名称的后两个组件”,如果 {n}没有,将会输出整个category名称.
%t:输出当前线程的名称
%x:输出和当前线程相关联的NDC(具体解释见下文),尤其用到像java servlets这样的多客户多线程的应用中。
%n:输出平台相关的换行符。
%%:输出一个%字符
%d:输出日志产生时候的日期,当然可以对日期的格式进行定制。例如:%d{HH:mm:ss,SSSS}或者是%d{dd MMM yyyy HH:mm:ss,SSSS},如果没有指定后面的格式,将会输出ISO8601的格式。
%l:输出位置信息,相当于%C.%M(%F:%L)的组合。
%C:输出日志消息产生时所在的类名,如果类名是“test.page.Class1”%C{1}表示输出类名Class1,%C{2}输出page.Class1,而%C则输出test.page.Class1。
%M:输出日志消息产生时的方法名称
%F:输出日志消息产生时所在的文件名称
%L:输出代码中的行号
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2) %-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,-号指定左对齐。
3) %.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。
4)%20.30c:
4 、读取配置文件
其语法为:
BasicConfigurator.configure () : 自动快速地使用缺省 Log4j 环境。
PropertyConfigurator.configure ( String configFilename) :读取使用 Java 的特性文件编写的配置文件。
DOMConfigurator.configure ( String filename ) :读取 XML 形式的配置文件。
log4j 配置,一般可以采用两种方式 .properties 和 .xml 。
一、 log4j.properties
# 设置对应的级别 INFO,DEBUG,WARN,ERROR 和输出地 A1 , A2
log4j.category.com.test =ERROR,A1
log4j.category.com.test=INFO, A2
### 设置输出地 A1 ,为 ConsoleAppender( 控制台 ) ##
log4j.appender.A1=org.apache.log4j.ConsoleAppender
### 设置 A1 的输出布局格式 PatterLayout( 可以灵活地指定布局模式) ##
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
### 配置日志输出的格式 ##
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
### 设置输出地 A2 到文件(文件大小到达指定尺寸的时候产生一个新的文件) ##
log4j.appender.A2=org.apache.log4j.RollingFileAppender
### 文件位置 ##
log4j.appender.A2.File=C:/log4j/log.html
### 文件大小 ##
log4j.appender.A2.MaxFileSize=500KB
log4j.appender.A2.MaxBackupIndex=1
## 指定采用 html 方式输出
log4j.appender.A2.layout=org.apache.log4j.HTMLLayout
二、 log4j.xml
<?xml version="1.0" encoding="GB2312" ?>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="com.test.all" class="org.apache.log4j.RollingFileAppender">
<param name="File" value=" C:/log4j/log. log" />
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="false" />
<param name="MaxBackupIndex" value="10" />
<!-- 设置输出文件项目和格式 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
</layout>
</appender>
<appender name="com.test.file " class="org.apache.log4j.RollingFileAppender">
<param name="File" value=" C:/log4j/output .log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
</layout>
</appender>
<logger name="test.log">
<level value="debug" /><!-- 设置级别 -->
<appender-ref ref="com.test.file" /><!-- 与前面的通道id相对应 -->
</logger>
<root> <!-- 设置接收所有输出的通道 -->
<appender-ref ref=" com.test.all" /><!-- 与前面的通道id相对应 -->
</root>
</log4j:configuration>
三、配置文件加载方法:
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class Log4jApp {
public static void main(String[] args) {
DOMConfigurator.configure(" C:/log4j/ log4j.xml");
//PropertyConfigurator.configure(" C:/log4j/ log4j.properties");
Logger log=Logger.getLogger("com.test");
log.info("Testing log.info()");
}
分享到:
相关推荐
**Log4j学习笔记** Log4j是一款广泛应用于Java编程中的日志记录框架,由Apache软件基金会开发。它提供了一套灵活的日志记录系统,帮助开发者在开发过程中追踪应用程序的行为,便于调试、性能分析和问题排查。Log4j...
### log4J学习笔记 #### 一、Apache Commons Logging与log4j及JDK Logger的关系 **Apache Commons Logging** 的设计初衷是为了提供一个简洁统一的日志接口,它并不直接实现日志功能,而是通过桥接的方式支持多种...
"log4j 学习笔记" log4j 是一个流行的 Java 日志记录工具, logger 是记录日志信息的基本单元。在 log4j 中, logger 的级别越低,记录的日志信息越详细。 Logger 的级别从低到高依次是:ALL 。 log4j 的日志记录...
### Log4j 学习笔记知识点详解 #### 一、Log4j 概述与架构 **Log4j** 是 **Apache** 组织提供的一个开源日志框架,旨在简化应用开发中的日志记录工作。它能够灵活地记录程序运行时的信息,并允许用户自定义日志的...
### Log4J学习笔记 #### 一、Log4J配置文件的学习 在深入理解Log4J之前,我们先从配置文件入手。Log4J支持多种配置文件格式,其中包括XML和Java特性文件(键=值)。这里我们将重点介绍如何使用Java特性文件作为...
### Log4j学习笔记 #### 一、Log4j简介 Log4j是Apache的一个开源项目,用于实现日志功能的Java库。它允许开发者控制日志信息的生成、格式和输出目标。Log4j的强大之处在于它的灵活性和扩展性,能够适应不同层次的...
**Log4j学习笔记** Log4j是一款广泛应用于Java编程中的日志记录工具,由Apache软件基金会开发。它提供了一种灵活且强大的机制来记录应用的运行情况,这对于调试、性能分析、问题追踪以及系统监控至关重要。这篇学习...
### Log4j学习笔记知识点详解 #### 一、Log4j概述 - **定义与功能**:Log4j是Apache组织推出的一个开源日志框架,主要用于控制和管理应用程序中的日志记录过程。它允许开发者非常灵活地配置日志输出的目的地(如...
### Log4j 学习笔记 #### Apache Log4j 简介 Log4j 是一个基于 Java 的开源日志框架,由 Apache 软件基金会维护。它为 Java 应用程序提供了一种灵活的方式来记录日志信息,并且允许用户自定义日志输出的目的地、...
Log4j 是一个广泛使用的开源日志记录框架,由 Apache 软件基金会开发。它为Java应用程序提供了一种灵活的日志记录机制,允许开发者控制日志信息的输出级别、输出目的地以及输出格式。由于其强大的功能和易于配置的...
Log4j 是一款广泛使用的日志记录框架,它允许开发者以高效、灵活的方式记录应用程序的日志信息。在本文中,我们将深入探讨Log4j的主要组件、功能和使用方法。 首先,我们来看一下Log4j的类图。Log4j的核心组件主要...
在学习Log4j的过程中,阅读“log4j学习笔记及写入数据库配置”这份资料将有助于深入理解Log4j的使用,包括具体的配置步骤、常见问题以及最佳实践。通过实践,你可以更好地掌握如何利用Log4j来提升你的应用程序的可...
Log4j学习笔记 在软件开发中,日志记录是一个至关重要的部分,它不仅帮助开发者监控程序运行状态,追踪错误,还可以为系统维护提供宝贵的审计信息。Log4j,一个由Apache开发的Java日志框架,是日志记录工具中的佼佼...
Log4j2 配置模板学习笔记 Log4j2 是 Java 语言中一种流行的日志记录工具,它提供了灵活的日志记录管理功能。下面我们将学习 Log4j2 配置模板的使用和配置。 引入 Log4j2 依赖 在使用 Log4j2 之前,需要在 Maven ...
标题“log4j学习”指出我们将探讨的是日志处理框架Log4j,这是一个广泛使用的Java日志工具,主要用于记录应用程序运行过程中的各种事件和异常信息。描述部分虽然为空,但通常在学习Log4j时,我们会涉及它的基本概念...
**log4j学习源码教程** 在Java编程中,日志记录是不可或缺的一部分,它能够帮助开发者追踪程序运行状态,定位错误和异常,为调试和性能优化提供关键信息。Log4j是Apache组织开发的一个开源日志框架,因其强大的功能...
Log4j是一款由Apache开发的开源日志框架,它提供了强大的日志记录功能,使得开发者能够在应用程序中方便地记录各种级别的日志信息。通过合理的配置,Log4j能够帮助我们更好地理解和追踪应用程序的运行状态,从而提高...
log4j的学习笔记,网上找到的,写的很不错