http://blog.csdn.net/hjwang1/archive/2009/08/13/4441500.aspx
2. 使用log4j 记录日志
2.1. log4j 简介
Log4j 是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
通常,我们都提供一个名为 log4j.properties的文件,在第一次调用到Log4J时,Log4J会在类路径(../web-inf /class/当然也可以放到其它任何目录,只要该目录被包含到类路径中即可)中定位这个文件,并读入这个文件完成的配置。这个配置文件告 诉Log4J 以什么样的格式、把什么样的信息、输出到什么地方。
Log4j有三个主要的组件:Loggers(记录器),Appenders(存储器)和Layouts(布局器),这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置(布局器如果不配置,日志信息会原样输出)。 以下从功能和性能两方面对其进行概要介绍。
2.1.1. Log4j功能优点
2.1.1.1. 日志可以按类别分组分别配置
L og4j允许设置多个记录器,每个记录器记录一类日志,
2.1.1.2. 输出的信息级别可以灵活配置
级别优先级由高到低依次是:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE 、 ALL
log4j建议只使用四个级别,优先级从高到低分别是:ERROR、WARN、INFO、DEBUG
只有优先级高于或等于设定级别的日志信息 才 被 输出到日志文件
默认情况下,会继承父记录器的级别
也可以单独设置该记录器的级别
2.1.1.3. 存储器A ppender 位置可以灵活配置
可以是: (控制台)
可以是: (文件)
可以: (每天产生一个日志文件)
可以: ( 让 文件大小到达指定尺寸的时候产生一个新的文件)
可以: (将日志信息以流格式发送到任意指定的地方)
可以是:( 数据库 )
可以是:( 邮件 )
默认情况下,会继承所有父记录器的输出源,直到根记录器。
也可以设置 log4j.additivity. 记录器名 =false ,来截断对 所有父记录器输出源的继承
也可以设置多个输出源
2.1.1.4. 可以为输出源设置布局器
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(包含日志产生的时间、线程、类别等等信息)
log4j.appender.appenderName.layout.ConversionPattern=%-4r %-5p %d %c %m%n
日志信息格式中几个符号所代表的含义:
-X号: X信息输出时左对齐;
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比 如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线 程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户 多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
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字符, 就从左边较远输出的字符截掉。
2.1.2. Log4 j性能优点
为了提高效率,在记录日志前, 可以对该日志级别是否打开做一个判断。
待补充 ……
2.3. 配置文件
2.3.1. Log4j 的配置文件 log4j.properties
#存放位置在 :release/etc
# 文件名: log4j.properties
# xtrans原来的日志,只配置了根记录器,添加设置布局器,
log4j.rootLogger=DEBUG,R
# 每天生成一个配置文件
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#日志文件位置
log4j.appender.R.File=log/core.log
#日志文件备份的后辍格式
log4j.appender.R.DatePattern = '.'yyyy-MM-dd
#设置日志文件布局器
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#设置该布局器的输出格式
log4j.appender.R.layout.ConversionPattern=[%d] %-5p (%F:%l) %t,%c - %m%n
#为插件访问数据设置一日志文件
log4j.logger.BSDATA=INFO,A0
log4j.appender.A0=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A0.File=log/bsplugin.log
log4j.appender.A0.DatePattern = '.'yyyy-MM-dd
log4j.appender.A0.layout=org.apache.log4j.PatternLayout
#XTRANS--Logger process result log,xtrans运行日志
#记录器名称:XTRANS,级别:DEBUG,存储器名称:A1
log4j.logger.XTRANS=DEBUG,A1
#XTRANS--Appender doesn't inherit his parent,截断对父存储器的继承
log4j.additivity.XTRANS=false
#A1-- main process and common invoke log,设置布局器
#按文件大小记录日志,超过文件大小,就另外创建一个新文件
log4j.appender.A1=org.apache.log4j.RollingFileAppender
#日志文件位置
log4j.appender.A1.file=log/main.log
#日志文件最大容量
log4j.appender.A1.MaxFileSize=50MB
#日志文件最多备份个数
log4j.appender.A1.MaxBackupIndex=20
#设置日志文件布局器
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#设置该布局器的输出格式
log4j.appender.A1.layout.ConversionPattern=[%d]%-5p(%F:%l) %t,%c - %m%n
2.3.2. 对 Log4j记录器的接入配置
#存放位置在 :release/etc
# 文件名:confLog4j .properties
# 设计此文件的目的:在不修改代码的情况下,可以切换日志信息的记录器
#key=value
XTRANSMEG=XTRANS
XTRANSRUNNEXTMEG=XTRANS
BSDATA=BSDATA
2.4. 日志记录实现方式
这里对每个请求都设置了唯一请求流水号,在输出日志时,都输出此流水号。
2.4.1. 初始化配置文件
log4j.properties可以放在CLASSPATH下,程序会自动去那里加载
也可手工配置
在 net.dratek.bsp .Run类里,调用方法
PropertyConfigurator. configure ( String log4jConfigurationFilePath );
加载配置文件
2.4.2. 核心 运行日志实现
2.4.2.1. 获得记录器
在需要写日志的类里,首先要获得记录器 名:
此处会用到, Log4j记录器的接入配置 文件 confLog4j.properties
private static String XTRANS =
Configure. readValue ( " release /etc/confLog4j.properties" ,
"XTRANSMEG" , "XTRANS" );
获得 日志句柄:
private static Logger logger = Logger. getLogger ( "XTRANS" );
2.4.2.2. 信息写入日志文件
写数据信息入日志文件:
Meg的进出日志,以 debug级别输出 ,
Logger . debug ( "Data Information" );
runNextMeg 日志 , 以 info级别输出 ,
Logger . info ( "Data Information" );
catch 日志 , 以 error级别输出 ,
Logger . error ( "Data Information" );
2.4.3. 访问数据日志实现
2.4.3.1. 获得记录器
在需要写日志的类里,首先要获得记录器 名:
此处会用到, Log4j记录器的接入配置 文件 confLog4j.properties
private static String BSDATA =
Configure. readValue ( " release /etc/confLog4j.properties" ,
"BSDATA" , "BSDATA" );
获得 日志句柄:
private static Logger logger = Logger. getLogger ( " BSDATA " );
2.4.3.2. 信息写入日志文件
写数据信息入日志文件:
logger . info ( "Data Information" );
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hjwang1/archive/2009/08/13/4441500.aspx
分享到:
相关推荐
这篇博客“使用log4j记录日志到数据库”将介绍如何配置和使用Log4j,以便将日志信息存储到数据库中,而非传统的文本文件。数据库存储的日志便于进行结构化查询,有助于进行长期的数据分析和管理。 首先,理解Log4j...
本文将详细介绍如何在Java中使用Log4j来记录日志,并将其写入数据库。 首先,我们需要了解Log4j的基本结构。一个简单的Log4j项目通常包含以下几个部分: 1. **配置文件**:Log4j的配置文件通常是`log4j.properties...
在Android开发中,日志记录是一项非常重要的任务,它...通过以上步骤,你就能在Android工程中成功使用Log4j进行日志记录了。记得合理配置日志级别,平衡调试需求与性能消耗,以及定期清理日志,以保持应用的健康运行。
本文将详细介绍如何在Android Studio中使用log4j库来记录日志,并实现按照日志文件大小自动滚动的功能,以及如何进行日志内容的格式化输出。 首先,log4j是一款广泛使用的日志记录框架,它提供了灵活的日志配置和...
压缩包中的"**lib**"目录可能包含Log4j的必要依赖库,比如`log4j.jar`,这是运行Log4j的日志记录功能所必需的。确保这些库文件被添加到Tomcat的`lib`目录,使得所有部署的应用都能访问Log4j。 综上所述,通过正确...
使用Log4j记录日志 在Java代码中,通过以下步骤使用Log4j: 1. 引入`log4j`的API: ```java import org.apache.log4j.Logger; ``` 2. 获取一个Logger实例,通常以类名作为logger的名字: ```java private ...
下面是一个使用Log4J记录日志的例子: ```java import org.apache.log4j.Logger; public class Example { private static final Logger logger = Logger.getLogger(Example.class); public void someMethod() {...
Log4j2是一款广泛使用的日志框架,它提供了灵活且高效的日志记录功能。本示例将详细介绍如何配置并使用Log4j2将日志信息记录到MySQL数据库中。 首先,我们要理解Log4j2的核心概念。Log4j2主要包括以下几个组件: 1...
Log4j是一个广泛使用的日志记录框架,它提供了灵活且高效的日志处理机制。本文将详细介绍如何使用Log4j来记录日志。 首先,Log4j的核心配置文件通常是`log4j.properties`或`log4j.xml`,在这里我们关注的是基于属性...
综上所述,"spring简单注解+log4j记录日志"这个主题涵盖了Spring框架中的注解使用、Log4j日志系统以及AOP的应用。通过学习这些内容,初学者可以更好地理解和实践Spring框架,同时提高代码的可维护性和调试效率。在...
Log4j2作为Java领域广泛使用的日志框架,提供了丰富的功能来满足这一需求。本文将详细介绍如何使用Log4j2实现日志数据脱敏。 一、Log4j2简介 Log4j2是Apache软件基金会开发的日志框架Log4j的升级版,它具有更高的...
在使用Log4j记录Debug日志时,确保项目中引入了相应的Log4j库,并正确配置了`log4j.properties`或`log4j.xml`文件,设置DEBUG级别,然后在代码中使用Logger对象进行日志记录。例如: ```java import org.apache.log4...
本教程将详细介绍如何在Java项目中使用Log4j进行日志记录。 首先,理解Log4j的基本组件至关重要。Log4j包含三个主要部分:Logger(日志器)、Appender(输出端)和Layout(格式化器)。Logger负责生成日志事件,...
Log4j是Apache的一个开源项目,用于Java应用程序的日志记录。它提供了一种高度灵活且功能强大的日志解决方案,允许开发者和系统管理员自定义日志级别、格式和输出目的地,从而有效地管理和监控应用程序的运行状况。 ...
2. **编写代码**:使用Log4j API来记录日志信息。 ```java import org.apache.log4j.Logger; public class Example { private static final Logger logger = Logger.getLogger(Example.class); public ...
提供的示例项目中,可能包含了一个简单的Java程序,演示了如何在代码中使用Log4j记录日志。通过导入Log4j的jar包,创建Logger实例,然后调用相应的记录方法,即可完成日志的生成。 总的来说,理解和掌握Log4j对于...
#### 四、使用Log4j记录日志 1. **引入Log对象**: ```java protected final Log log = LogFactory.getLog(getClass()); ``` 在Java类中,需要引入Log对象以便记录日志信息。 2. **记录日志信息**: ```...
Log4j的包下载完成后,解压,将其中打包好的的log4j-1.x.x.jar导入你的工程LIB中。... //下面就可使用log4j log.info("info"); log.debug("debug"); log.error("error"); log.warn("warn"); } }
Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...
#### 三、使用Log4j记录日志 在代码中使用Log4j进行日志记录时,通常需要获取一个Logger实例,然后通过该实例记录不同级别的日志信息。例如: ```java import org.apache.log4j.Logger; public class Example { ...