- 浏览: 216833 次
- 性别:
- 来自: 北京
文章分类
log4j由三部分组成:Logger、Appender、Layout
Logger代码:
package org.apache.log4j;
public class Logger{
//两个静态方法
public static Logger getRootLogger(){xxx}
public static Logger getLogger(Class name){xxx}
//打印方法
public void debug(Object message){xxx}
public void info(Object message){xxx}
public void warn(Object message){xxx}
public void error(Object message){xxx}
public void fatal(Object message){xxx}
//通用的打印方法
public void log(Level level,Object message){xxx}
}
Logger有5种级别,由低到高的顺序:debug,info,warn,error,fatal.
如果一个日志没有指定级别,那么他将从最近的一个指定级别的祖先的继承级别。
根记录器总是有级别的。
如:
记录器 指定的级别 最终的级别
root info info
a warn warn
a.b none warn
日志记录器在打印日志信息时,先检查该日志定义的级别,如果打印的级别大于等于该级别才会产生日志信息。
当我们调用Logger.getLogger(String name)时总是返回同一个记录器的引用,这样就方便不同类使用同一个记录器打印日志信息。
Appender组件
在log4j中信息通过Appender组件输出到目的地。一个Appender实例代表了一个输出的目的地。
一个记录器可以拥有多个Appender组件。
log4j提供的appender有以下几种。
1.org.apache.log4j.ConsoleAppender 输出的目的地为控制台
2.org.apache.log4j.FileAppender 输出目的地为文件
3.org.apache.log4j.DailyRollingFileAppender 按照用户指定的时间或日期频率滚动产生日志文件
4.org.apache.log4j.RollingFileAppender 当日志文件达到一定尺寸时备份文件
对于Appender是一种叠加性的,而且后代记录器只能记录其父类的Appender。如
记录器的名称 添加的appender 继承叠加性 输出目标
root A1 / A1
x A-x1,A-x2 true A1,A-x1,A-x2
x.y none true A1,A-x1,A-x2
x.y.z A-abc true A1,A-x1,A-x2,A-abc
a A-a1 false A-a1
a.b none true A-a1
a.b.c A-a1 true A-a1,A-a1
因为记录器a的叠加属性为false,所以不用叠加。由于a.b.c添加的appender与a.b继承的一样,所以最后A-a1会输出两份信息。
Layout组件
layout用于格式话输出日志信息
layout由以下几种组成
1.org.apache.log4j.SimpleLayout 日志信息级别+日志信息
2.org.apache.log4j.HTMLLayout 以html表格的方式输出日志信息
3.org.apache.log4j.xml.XMLLayout 由log4j:event元素组成
4.org.apache.log4j.PatternLayout 以自己指定的格式话方式输出
如格式话语句:%r[%t]%-5p %c-%m%n
实例:
%d{yyyy-MM-dd HH:mm:ss}[%r][%C][%F][%l][%t][%L][%M][%c]-[%-5p] %m%n
重点需要的参数:
%d{yyyy-MM-dd HH:mm:ss}指定日志日期格式
%C表示类完整的路径
%F表示类的名称
%l表示类路径和类名称以及行数
%m表示错误描述信息
%n表示最后输出回车换行
使用log4j的三个步骤:
1)获得日志记录器
2)读取log4j的配置文件
配置log4j的环境的三种方法
BasicConfigurator.configure()
PropertyConfigurator.configure(String configName)
DOMConfigurator.configure(String fileName)
三种主要的log4j的组件配置
如果配置跟记录器log4j.roorLogger=[level],[appendername1],[appendername2]
leve指定日志级别,包括DUBUG,INFO,WARN,ERROR,FATAL
appendername指定Appender组件,可以同时指定多个组件
如果配置其他的记录器的语法log4j.logger.loggerName=[level],[appendername1],[appendername2]
配置appender组件
log4j.appender.appenderName=完整的类名
log4j.appender.appenderName.option1=value1
....
log4j.appender.appenderName.optionN=valueN
配置layout组件
log4j.appender.appenderName.layout=完整的类名
log4j.appender.appenderName.layout.option1=value1
...
log4j.appender.appenderName.layout.optionN=valueN
具体配置实例:
#根记录器的日志级别是ERROR,这个级别以下的信息将都被忽略掉
#为跟记录器指定console的Appender
log4j.rootLogger=ERROR,console
#定义store的记录器,没有日志级别,将继承跟记录器的级别
#为store指定名为file的Appender,store还将记录跟记录器的Appender
log4j.logger.store=,file //逗号前没有值表示没有定义日志级别会继承根记录器的A日志级别,还将继承跟记录器的Appender
#定义console的appender是ConsoleAppender
log4j.appender.console=org.apache.log4j.ConsoleAppender
#console使用的SimpleLayout
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
#定义名字为file的appender的类型是FileAppender
log4j.appender.file=org.apache.log4j.FileAppender
#指定file的存放路径和文件
log4j.appender.file.File=F:/folder/a.log
#file的appender使用的layout是PatternLayout
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#指定日志信息的输出格式
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}[%c]-[%-5p]%m%n%n
#设置store的叠加型为false
log4j.additivity.store=false
#设置RollingFileAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender
#设置最大的尺寸是1M,当到达1M时,开始备份
log4j.appender.file.MaxFileSize=1MB
#设置备份文件的最大数目为2个
log4j.appender.file.MaxBackupIndex=2
#指定存储路径
log4j.appender.file.File=D:/a.log
#HTMLLayout设置
log4j.appender.file.layout=org.apache.log4j.HTMLLayout
#指定打印输出文件所在的文件名和行数
log4j.appender.file.layout.LocationInfo=true
#设置DailyRollingFileAppender
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
#指定文件名的日期格式
log4j.appender.file.DatePattern='.'yyyy-MM-dd
#指定编码
log4j.appender.file.encoding=GBK
#指定是否继续添加
log4j.appender.file.Append=true
-------
log4j的环境配置与初始化
在web.xml中配置log4j的servlet
<servlet>
<servlet-name>log4jServlet</servlet-name>
<servlet-class>com.xxx.Log4jServlet</servlet-class>
<init-Param>
<param-name>log4jLocal</param-name>
<param-name>WEB-INF/log4j.properties
</init-Param>
<load-on-startup>1</load-on-startup>
</servlet>
在servlet中进行初始化
继承HttpServlet
在init方法中
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4jLocal");
读取配置文件
PropertyConfigurator.configure(prefix+file);
java类中调用具体的Appender
static Logger storeLogger = Logger.getLogger("store");
//进而调用storeLogger的打印方法就会打印到对应的appender中了。
Logger代码:
package org.apache.log4j;
public class Logger{
//两个静态方法
public static Logger getRootLogger(){xxx}
public static Logger getLogger(Class name){xxx}
//打印方法
public void debug(Object message){xxx}
public void info(Object message){xxx}
public void warn(Object message){xxx}
public void error(Object message){xxx}
public void fatal(Object message){xxx}
//通用的打印方法
public void log(Level level,Object message){xxx}
}
Logger有5种级别,由低到高的顺序:debug,info,warn,error,fatal.
如果一个日志没有指定级别,那么他将从最近的一个指定级别的祖先的继承级别。
根记录器总是有级别的。
如:
记录器 指定的级别 最终的级别
root info info
a warn warn
a.b none warn
日志记录器在打印日志信息时,先检查该日志定义的级别,如果打印的级别大于等于该级别才会产生日志信息。
当我们调用Logger.getLogger(String name)时总是返回同一个记录器的引用,这样就方便不同类使用同一个记录器打印日志信息。
Appender组件
在log4j中信息通过Appender组件输出到目的地。一个Appender实例代表了一个输出的目的地。
一个记录器可以拥有多个Appender组件。
log4j提供的appender有以下几种。
1.org.apache.log4j.ConsoleAppender 输出的目的地为控制台
2.org.apache.log4j.FileAppender 输出目的地为文件
3.org.apache.log4j.DailyRollingFileAppender 按照用户指定的时间或日期频率滚动产生日志文件
4.org.apache.log4j.RollingFileAppender 当日志文件达到一定尺寸时备份文件
对于Appender是一种叠加性的,而且后代记录器只能记录其父类的Appender。如
记录器的名称 添加的appender 继承叠加性 输出目标
root A1 / A1
x A-x1,A-x2 true A1,A-x1,A-x2
x.y none true A1,A-x1,A-x2
x.y.z A-abc true A1,A-x1,A-x2,A-abc
a A-a1 false A-a1
a.b none true A-a1
a.b.c A-a1 true A-a1,A-a1
因为记录器a的叠加属性为false,所以不用叠加。由于a.b.c添加的appender与a.b继承的一样,所以最后A-a1会输出两份信息。
Layout组件
layout用于格式话输出日志信息
layout由以下几种组成
1.org.apache.log4j.SimpleLayout 日志信息级别+日志信息
2.org.apache.log4j.HTMLLayout 以html表格的方式输出日志信息
3.org.apache.log4j.xml.XMLLayout 由log4j:event元素组成
4.org.apache.log4j.PatternLayout 以自己指定的格式话方式输出
如格式话语句:%r[%t]%-5p %c-%m%n
实例:
%d{yyyy-MM-dd HH:mm:ss}[%r][%C][%F][%l][%t][%L][%M][%c]-[%-5p] %m%n
重点需要的参数:
%d{yyyy-MM-dd HH:mm:ss}指定日志日期格式
%C表示类完整的路径
%F表示类的名称
%l表示类路径和类名称以及行数
%m表示错误描述信息
%n表示最后输出回车换行
使用log4j的三个步骤:
1)获得日志记录器
2)读取log4j的配置文件
配置log4j的环境的三种方法
BasicConfigurator.configure()
PropertyConfigurator.configure(String configName)
DOMConfigurator.configure(String fileName)
三种主要的log4j的组件配置
如果配置跟记录器log4j.roorLogger=[level],[appendername1],[appendername2]
leve指定日志级别,包括DUBUG,INFO,WARN,ERROR,FATAL
appendername指定Appender组件,可以同时指定多个组件
如果配置其他的记录器的语法log4j.logger.loggerName=[level],[appendername1],[appendername2]
配置appender组件
log4j.appender.appenderName=完整的类名
log4j.appender.appenderName.option1=value1
....
log4j.appender.appenderName.optionN=valueN
配置layout组件
log4j.appender.appenderName.layout=完整的类名
log4j.appender.appenderName.layout.option1=value1
...
log4j.appender.appenderName.layout.optionN=valueN
具体配置实例:
#根记录器的日志级别是ERROR,这个级别以下的信息将都被忽略掉
#为跟记录器指定console的Appender
log4j.rootLogger=ERROR,console
#定义store的记录器,没有日志级别,将继承跟记录器的级别
#为store指定名为file的Appender,store还将记录跟记录器的Appender
log4j.logger.store=,file //逗号前没有值表示没有定义日志级别会继承根记录器的A日志级别,还将继承跟记录器的Appender
#定义console的appender是ConsoleAppender
log4j.appender.console=org.apache.log4j.ConsoleAppender
#console使用的SimpleLayout
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
#定义名字为file的appender的类型是FileAppender
log4j.appender.file=org.apache.log4j.FileAppender
#指定file的存放路径和文件
log4j.appender.file.File=F:/folder/a.log
#file的appender使用的layout是PatternLayout
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#指定日志信息的输出格式
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}[%c]-[%-5p]%m%n%n
#设置store的叠加型为false
log4j.additivity.store=false
#设置RollingFileAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender
#设置最大的尺寸是1M,当到达1M时,开始备份
log4j.appender.file.MaxFileSize=1MB
#设置备份文件的最大数目为2个
log4j.appender.file.MaxBackupIndex=2
#指定存储路径
log4j.appender.file.File=D:/a.log
#HTMLLayout设置
log4j.appender.file.layout=org.apache.log4j.HTMLLayout
#指定打印输出文件所在的文件名和行数
log4j.appender.file.layout.LocationInfo=true
#设置DailyRollingFileAppender
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
#指定文件名的日期格式
log4j.appender.file.DatePattern='.'yyyy-MM-dd
#指定编码
log4j.appender.file.encoding=GBK
#指定是否继续添加
log4j.appender.file.Append=true
-------
log4j的环境配置与初始化
在web.xml中配置log4j的servlet
<servlet>
<servlet-name>log4jServlet</servlet-name>
<servlet-class>com.xxx.Log4jServlet</servlet-class>
<init-Param>
<param-name>log4jLocal</param-name>
<param-name>WEB-INF/log4j.properties
</init-Param>
<load-on-startup>1</load-on-startup>
</servlet>
在servlet中进行初始化
继承HttpServlet
在init方法中
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4jLocal");
读取配置文件
PropertyConfigurator.configure(prefix+file);
java类中调用具体的Appender
static Logger storeLogger = Logger.getLogger("store");
//进而调用storeLogger的打印方法就会打印到对应的appender中了。
发表评论
-
封装的分页类
2012-03-14 13:34 916public class Page<T>{ ... -
定时器
2012-01-03 22:57 0JDK 1.5之前的定时器 JDK中Timer是表示定时器的意 ... -
自定义数据库连接池
2011-12-29 13:26 0import java.sql.Connection; imp ... -
皮皮书屋
2011-12-29 12:53 0http://www.ppurl.com/tag/java/p ... -
HttpURLConnection详解
2011-12-10 17:22 0通过HttpURLConnection可以请求Web资源。 H ... -
杂文学习
2011-12-05 15:26 01.catalina.bat里面可能有些配置信息,这样启动会去 ... -
利用反射封装的JDBC工具类
2011-11-28 11:44 1770/** * JDBC工具类 */ public ... -
dom4j saxReader解析xml
2011-11-14 17:06 11566import java.io.File; import jav ... -
dom4j API讲解
2011-11-14 17:03 2185Element是dom4j的一个核心元素. 其常用api如下: ... -
java mail
2011-11-11 17:05 959实例 import java.util.Properties ... -
ContentType
2011-11-06 20:25 1003ajax开发中, 常遇到下面的几种情况: 1 服务端需要返回 ... -
MD5加密
2011-11-04 16:23 980MD5是一种不可逆的加密算法,虽然该加密算法已经被破解,但是对 ... -
http,ftp实现上传和下载(下)
2011-11-04 16:00 1284如果上传文件比较大或希望上传速度可以快一点可以考虑使用ftp上 ... -
http,ftp实现上传和下载(上)
2011-11-04 15:29 4272ftp是应用层的协议,即文件传输协议。默认使用21端口。通过该 ...
相关推荐
### Log4j详解:日志记录的全面解析 #### 标题与描述解析: 标题“log4j详解(超详细)”与描述“log4j详解(超详细)”明确指出文章将对Log4j这一日志框架进行深入且详尽的介绍。Log4j作为一款流行的开源日志组件...
Log4j 详解 Log4j 是一款功能强大的日志记录工具,广泛应用于 Java 应用程序中。它可以帮助开发人员调试和分析程序,记录程序的运行情况,并提供了灵活的配置方式来控制日志的输出。 Log4j 的概念 Log4j 中有三个...
**Log4j详解与实战** Log4j是Java平台上的一个广泛应用的日志框架,由Apache软件基金会开发。它提供了一种灵活、强大的日志记录机制,使得开发者可以在应用程序中轻松地进行日志输出,便于调试、性能分析以及系统...
### Log4j详解 #### 1. Log4j简介 Log4j是Apache下的一个开源项目,用于实现灵活的日志管理。它可以帮助开发者控制日志信息的输出目的地、格式以及生成过程,这一切都可以通过简单的配置文件来实现,而无需修改...
**日志框架Log4j详解** 日志框架在软件开发中扮演着至关重要的角色,它提供了记录应用程序运行过程中的各种信息的功能,便于调试、监控和问题排查。Log4j是Apache组织开发的一个开源日志记录工具,广泛应用于Java...
### Log4j详解:日志记录的精妙与配置解析 Log4j是Apache软件基金会下的一个开源项目,用于Java应用程序的日志记录。它提供了一种灵活、强大的日志记录框架,可以定制日志级别、格式和输出目标,极大地提高了应用的...
【log4j详解】 在Java开发中,日志记录是一个至关重要的部分,它帮助开发者监控程序行为、追踪错误和调试代码。Log4j是Apache软件基金会的一个开源项目,提供了强大的日志处理能力。本文将深入解析Log4j,探讨其...
### Log4j 详解与实战 #### 一、Log4j 概述 Log4j 是 Apache 的一个开源项目,它是由 Java 编写的一款功能强大的日志记录工具。Log4j 具备灵活的日志配置能力,允许开发者在运行时动态地控制日志输出的等级、格式...
### Log4j 配置详解 #### 一、概述 Log4j 是一款非常流行的 Java 日志框架,它提供了一种灵活的日志记录机制。在实际应用中,开发者可以通过简单的配置来实现对日志级别的控制、日志信息的格式化以及日志文件的...
Log4j 在 SSM 整合中的配置详解 Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM...
### Log4j详解 #### 输出级别的种类 在Log4j中,日志记录的信息可以根据不同的级别进行筛选。这些级别从高到低分别为:`FATAL`、`ERROR`、`WARN`、`INFO`、`DEBUG`。这些级别的定义如下: - **FATAL**:致命错误...
在“log4j详解”部分,我们首先会了解到Log4j的核心概念,包括Logger、Appender、Layout和Level。Logger是记录日志的对象,它可以设置不同的级别(如DEBUG、INFO、WARN、ERROR和FATAL),以便控制不同级别的信息输出...
**日志框架Log4j详解** 日志框架在软件开发中扮演着至关重要的角色,它提供了记录应用程序运行过程中的各种事件的功能,便于调试、监控和问题排查。Log4j是Apache组织开发的一个开源的日志记录工具,广泛应用于Java...