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学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记
Log4j 学习笔记. 1. Log4j的类图 2. Logger:日志写出器 1. Logger的输出方法 2. Logger的命名规则 3. Log level 4. 示例代码 5. 关于logger的两点说明 3. Appender:日志目的地 1. ConsoleAppender 2. ...
Log4j 学习笔记
Log4j学习笔记和一套完整定义实例 精辟
log4j 学习笔记 自己整理出来的 网上写的很杂乱。其实在java企业级中开发 我们更重视的是如何做日志记录。本笔记快速入门使用 log4j 节省了企业开发的学习成本
Log4J学习笔记 1、配置文件 2、数据库 3、封装
log4j的详细学习笔记,最适合初级、中级学员
log4j学习笔记.
log4j学习笔记及写入数据库配置,一份log4j学习资料。还包含log4j写入数据库的配置方法。
*Log4j 学习笔记,自己的一点学习经验
Log4j2学习笔记,引入log4j2的依赖-log4j2.xml配置模板-application.properties文件配置-使用
Jerry lv的log4j笔记,图文并茂,推荐
供初学人员学习,包括log4J的文件配置以及代码示例
log4j的学习笔记,网上找到的,写的很不错
Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j ,我们可以控制日志信 送的目的地是控制台、文件、 GUI 组件、甚至是套接口服务器、 NT 的事件记录器、 X Syslog 守护进程等;我们也可以控制每一条日志的...
Log4J的组件 Log4j有三个主要的组件,分别是loggers,appenders和layouts.这三种类型的部件工作在一起就能允许开发者根据记录信息的类型和级别来记录日志信息,并且在系统运行时能够按照不同的格式将这三类信息存储在...
pptx格式。Log4j详细讲解。Logger--日志写出器,供程序员输出日志信息 。Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。
Log4j log for java(java的日志) 是java主流的日志框架,提供各种类型,各种存储,各种格式,多样化的日志服务。Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、...
log4j学习笔记.培训架构的学习资料,分享给大家,希望对大家有用!