`

使用log4j 记录日志

    博客分类:
  • java
阅读更多

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,以便将日志信息存储到数据库中,而非传统的文本文件。数据库存储的日志便于进行结构化查询,有助于进行长期的数据分析和管理。 首先,理解Log4j...

    log4j使用与java中log4j记录日志如何写入数据库

    本文将详细介绍如何在Java中使用Log4j来记录日志,并将其写入数据库。 首先,我们需要了解Log4j的基本结构。一个简单的Log4j项目通常包含以下几个部分: 1. **配置文件**:Log4j的配置文件通常是`log4j.properties...

    示范如何在android工程中使用log4j记录日志

    在Android开发中,日志记录是一项非常重要的任务,它...通过以上步骤,你就能在Android工程中成功使用Log4j进行日志记录了。记得合理配置日志级别,平衡调试需求与性能消耗,以及定期清理日志,以保持应用的健康运行。

    AndroidStudio 使用log4j记录日志,按照大小定期滚动日志Demo

    本文将详细介绍如何在Android Studio中使用log4j库来记录日志,并实现按照日志文件大小自动滚动的功能,以及如何进行日志内容的格式化输出。 首先,log4j是一款广泛使用的日志记录框架,它提供了灵活的日志配置和...

    tomcat8更换log4j记录日志

    压缩包中的"**lib**"目录可能包含Log4j的必要依赖库,比如`log4j.jar`,这是运行Log4j的日志记录功能所必需的。确保这些库文件被添加到Tomcat的`lib`目录,使得所有部署的应用都能访问Log4j。 综上所述,通过正确...

    Log4j记录日志DEMO

    使用Log4j记录日志 在Java代码中,通过以下步骤使用Log4j: 1. 引入`log4j`的API: ```java import org.apache.log4j.Logger; ``` 2. 获取一个Logger实例,通常以类名作为logger的名字: ```java private ...

    在Eclipse中应用Log4J记录日志

    下面是一个使用Log4J记录日志的例子: ```java import org.apache.log4j.Logger; public class Example { private static final Logger logger = Logger.getLogger(Example.class); public void someMethod() {...

    log4j2.xml记录日志到到数据库

    Log4j2是一款广泛使用的日志框架,它提供了灵活且高效的日志记录功能。本示例将详细介绍如何配置并使用Log4j2将日志信息记录到MySQL数据库中。 首先,我们要理解Log4j2的核心概念。Log4j2主要包括以下几个组件: 1...

    如何使用log4j记录日志-.docx

    Log4j是一个广泛使用的日志记录框架,它提供了灵活且高效的日志处理机制。本文将详细介绍如何使用Log4j来记录日志。 首先,Log4j的核心配置文件通常是`log4j.properties`或`log4j.xml`,在这里我们关注的是基于属性...

    spring简单注解+log4j记录日志

    综上所述,"spring简单注解+log4j记录日志"这个主题涵盖了Spring框架中的注解使用、Log4j日志系统以及AOP的应用。通过学习这些内容,初学者可以更好地理解和实践Spring框架,同时提高代码的可维护性和调试效率。在...

    使用log4j2实现日志数据脱敏

    Log4j2作为Java领域广泛使用的日志框架,提供了丰富的功能来满足这一需求。本文将详细介绍如何使用Log4j2实现日志数据脱敏。 一、Log4j2简介 Log4j2是Apache软件基金会开发的日志框架Log4j的升级版,它具有更高的...

    log4j记录Debug日志

    在使用Log4j记录Debug日志时,确保项目中引入了相应的Log4j库,并正确配置了`log4j.properties`或`log4j.xml`文件,设置DEBUG级别,然后在代码中使用Logger对象进行日志记录。例如: ```java import org.apache.log4...

    S2_Java4_使用log4j记录日志信息

    本教程将详细介绍如何在Java项目中使用Log4j进行日志记录。 首先,理解Log4j的基本组件至关重要。Log4j包含三个主要部分:Logger(日志器)、Appender(输出端)和Layout(格式化器)。Logger负责生成日志事件,...

    Log4j日志等级,具体说明了log4j中的日志记录等级,对于自己写日志有很大帮助。

    Log4j是Apache的一个开源项目,用于Java应用程序的日志记录。它提供了一种高度灵活且功能强大的日志解决方案,允许开发者和系统管理员自定义日志级别、格式和输出目的地,从而有效地管理和监控应用程序的运行状况。 ...

    log4j日志的基本使用

    2. **编写代码**:使用Log4j API来记录日志信息。 ```java import org.apache.log4j.Logger; public class Example { private static final Logger logger = Logger.getLogger(Example.class); public ...

    使用log4j生成日志

    提供的示例项目中,可能包含了一个简单的Java程序,演示了如何在代码中使用Log4j记录日志。通过导入Log4j的jar包,创建Logger实例,然后调用相应的记录方法,即可完成日志的生成。 总的来说,理解和掌握Log4j对于...

    如何使用Log4j如何使用Log4j

    #### 四、使用Log4j记录日志 1. **引入Log对象**: ```java protected final Log log = LogFactory.getLog(getClass()); ``` 在Java类中,需要引入Log对象以便记录日志信息。 2. **记录日志信息**: ```...

    使用log4j进行日志记录

    Log4j的包下载完成后,解压,将其中打包好的的log4j-1.x.x.jar导入你的工程LIB中。... //下面就可使用log4j log.info("info"); log.debug("debug"); log.error("error"); log.warn("warn"); } }

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

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

    关于开源日志记录工具log4j的使用.txt

    #### 三、使用Log4j记录日志 在代码中使用Log4j进行日志记录时,通常需要获取一个Logger实例,然后通过该实例记录不同级别的日志信息。例如: ```java import org.apache.log4j.Logger; public class Example { ...

Global site tag (gtag.js) - Google Analytics