`
colorlife
  • 浏览: 132355 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

转 :Log4j使用总结

阅读更多

http://ipie.blogbus.com/logs/13545762.html

 

以前的项目中为了能够检查程序的运行状态,需要将程序运行时的一些信息记录到日志文件中。

Log4j是一个较全面的日志软件包,能够满足各种形式的日志记录需要,并且使用起来比较方便,结构非常清晰,经过这段时间的使用,对其进行了较详细的学习,在实际项目的使用中,深刻感受到了它的方便和功能的全面。

Log4j的基本使用方法在其官方网站上有较详细的介绍,下面这篇文章对于基本应用已经满足:

Short introduction to log4j:http://logging.apache.org/log4j/docs/manual.html


下面根据我自己的使用,对其使用方法进行总结。

Log4j最初只是为了对java程序进行日志记录的软件包,而现在已经有多种语言的版本,如C, C++, C#, Perl, Python, Ruby, 和 Eiffel。

Log4j中有三个最重要的概念:Logger,Appender 和 Layout,下面对它们分别叙述:

一、Logger

Logger可以理解为一个日志记录器,在程序中由它完成日志记录的工作。在Log4j中有对应的Logger类,其提供设置日志输出级别,日志输出地址的方法,并可将信息按照指定级别(Level)进行输出

Logger中可以设置的级别有七级,由低到高分别为:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF ,其中,ALL 代表输出所有级别的日志信息,OFF 代表关闭所有日志信息的输出,也就是说,Logger在程序中可以输出的日志信息有五种级别,可分别用在不同情况的日志输出。如:DEBUG 级别的信息通常为一些调试时程序开发者需要查看的程序运行状态,ERROR 级别的信息则主要用于记录程序运行的错误。

由于日志信息被分为了不同级别,而Log4j又提供了对不同级别日志的输出开关,因此可以在不修改程序源代码的情况下定制日志的输出内容。

在log4j的配置文件中可用方式配置日志的输出级别:

log4j.rootLogger=OFF #关闭根Logger的日志输出
log4j.logger.mylogger=DEBUG #将mylogger的日志输出级别设定为DEBUG

所有在配置文件中配置的信息都可以在程序中动态配置

Logger有层次关系,其日志输出级别也会继承父级的输出级别,因此,当某一Logger没有指定输出级别时,将默认使用其父级Logger的输出级别。

Logger的输出地址,由Appender指定,一个Logger可指定多个Appender,也就是说,相同的信息可同时输出到不同的地方,程序开发者可在调试时,让日志信息在输入日志文件的同时,向控制台也输出,以方便查看程序运行状态。

与日志级别一样,Appender也会根据Logger的层次关系继承父级Logger的所有Appender

对于Logger的层次关系, Short introduction to log4j:

http://logging.apache.org/log4j/docs/manual.html中有较详细的介绍和例子。

二、Appender

以上已经提到,Appender用来配置日志信息的输出地址,包括控制台,文件等:

Currently, appenders exist for the consolefiles, GUI components, remote socketservers, JMSNT Event Loggers, and remote UNIX Syslog daemons. It is also possible to log asynchronously.

以上不同用途和不同输出地址都有对应的Appender,下面列举几个常用的Appender:

  • ConsoleAppender :将日志信息输出到控制台
  • FileAppender: 将日志信息输出到普通文本文件
  • DailyRollingFileAppender: 将日志信息输出到普通文本文件,并每天自动产生新日志文件,在前一天的日志文件名后追加日期,追加的信息格式可由用户自己定义
  • RollingFileAppender:文件大小到达指定尺寸时,产生一个新的文件
  • WriterAppender:将日志信息以流格式发送到任意指定的地方

对于将日志输出到文件的Appender,还要考虑一个文件字符集编码的问题。默认情况下,Log4j将日志信息按照本地系统编码输出到文件,为了使其按照指定编码生成日志文件,则需要指定编码方式。

在我自己的使用过程中,编码的问题困扰了我很久,因为在我使用DailyRollingFileAppender的setEncoding()方法时,发现输出的日志文件并没有按照我指定的编码保存,后来才发现,在程序中设定完Appender的属性后,一定要调用Appender的activateOptions()方法,才能使设置生效

下面是我出问题的代码:

DailyRollingFileAppender fileAppender = new DailyRollingFileAppender (Layout, filepath, datepattern);

fileAppender.setName("fileAppender");

fileAppender.setEncoding("utf-8");

按照以上方式设定日志文件的编码将失效,日志文件并不会按照设定的编码方式保存。

下面是修改后的编码:

DailyRollingFileAppender fileAppender = new DailyRollingFileAppender (Layout, filepath, datepattern);
fileAppender.setName("fileAppender");
fileAppender.setEncoding("utf-8");
fileAppender.activateOptions();

三、Layout

Log4j中提供了对日志信息输出格式进行定制的类,称为Layout类,其可作为Appender的属性添加到Appender中。常用的Layout类有:

  • org.apache.log4j.HTMLLayout :以HTML表格形式布局
  • org.apache.log4j.PatternLayout :可以灵活地指定布局模式
  • org.apache.log4j.SimpleLayout :包含日志信息的级别和信息字符串
  • org.apache.log4j.TTCCLayout :包含日志产生的时间、线程、类别等等信息

其中最灵活的Layout类为PatternLayout,用户可对其日志信息输出格式进行完全自由的定制,通过在pattern字符串中的特殊字符来控制。

在Log4j的官方网站中,对pattenr字符串中特殊字符的意义和用法有详细的介绍和举例:http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html

分享到:
评论

相关推荐

    log4j-如何将日志打印到控制台:log4j-demo.zip

    总结,Log4j是一个强大且灵活的日志框架,通过配置Appender和Layout,可以轻松地将日志输出到控制台或其他目的地。在实际开发中,根据项目的需要,可以定制不同的日志策略,从而提高问题排查的效率。理解和掌握Log4j...

    log4j使用总结

    Log4j 使用总结 Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件、甚至是套接口服务器、NT 的事件记录器、UNIX Syslog 守护进程等;我们也可以...

    SpringBoot框架配置log4j和log4j2的配置代码

    Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    总结来说,Log4j2.16.0是一个关键的安全更新,解决了Log4j2框架中的“Log4Shell”漏洞。对于使用若依框架或其他依赖Log4j2的项目,升级到这个版本至关重要,可以避免系统遭受恶意攻击。用户需要下载并正确安装这个...

    apache-log4j-2.3-bin和commons-logging-1.2

    总结来说,Apache Log4j 2.3 和 Commons Logging 1.2 在Java Web开发中扮演着重要角色,它们帮助开发者方便地记录、管理和分析应用程序的日志,提升开发效率和问题排查能力。这两个库的结合使用,能够实现日志系统的...

    log4j-1.2.15.jar

    本文将详细解析Log4j 1.2.15.jar这个版本的核心概念、使用方法以及重要特性。 一、Log4j简介 Log4j是由Apache软件基金会开发的一个开源日志组件,主要为Java应用程序提供日志服务。它的设计理念是让日志输出变得...

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    总结,SLF4J和Log4j的组合使用让日志管理更加灵活,开发者可以通过SLF4J的简洁API进行日志记录,同时利用Log4j的强大功能,如自定义输出格式和多种输出目的地。通过适当的配置和测试,我们可以确保日志系统按照预期...

    Log4j将System.out搞到log4j中输出四

    总结来说,Log4j提供了一套强大的日志管理框架,通过自定义Appender和PrintStream,我们可以轻松地将`System.out.println()`的输出整合到Log4j中,从而实现日志的集中管理和分析。这对于大型项目或者需要严格监控的...

    log4j使用详解log4j使用详解

    ### Log4j 使用详解 #### 一、Log4j简介 Log4j 是 Apache 的一个开源项目,通过使用 Log4j,开发者能够控制日志信息的输出等级及去向,从而更加灵活地处理日志信息。它具有强大的功能,简单的配置,并且能够支持...

    log4j2-2.3

    标题"Log4j2-2.3"指的是Apache Log4j的第二个主要版本2.3,这是一个广泛使用的Java日志框架。Log4j是用于记录应用程序运行时事件的开源库,而Log4j2是其升级版,提供了更高的性能、可配置性和可扩展性。 描述中提到...

    Log4j使用实例

    ### Log4j 使用实例详解 #### 一、Log4j简介 Log4j 是一个开源的日志记录框架,由 Apache 软件基金会提供。它允许开发者根据需求配置日志等级,并灵活选择日志信息的输出方式。Log4j 的核心组件包括 Logger、...

    log4j-slf4j-impl.zip

    总结,Log4j-SLF4J-Impl结合了SLF4J的灵活性和Log4j的强大功能,为Java开发者提供了高效且可扩展的日志解决方案。了解并熟练掌握这一组件,能显著提升开发效率,同时也有助于构建更稳定、易维护的应用系统。

    如何使用Log4j如何使用Log4j

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

    log4j使用jar包和log4j.properties配置文件

    本文将详细探讨Log4j的使用,主要关注1.2.17版本的jar包以及配置文件`log4j.properties`。 ### 1. Log4j简介 Log4j是一个开源的日志组件,支持多种输出格式,如控制台、文件、数据库等。它的核心概念包括Logger、...

    log4j.rar log4j使用方法

    4. **记录日志**:使用Logger的`debug()`, `info()`, `warn()`, `error()`, `fatal()`等方法记录不同级别的日志。 5. **运行应用**:运行程序,查看日志输出。 **文件名称列表解析** - **log4j使用方法.doc**:这...

    log4j-1.2.17.jar

    总结来说,"log4j-1.2.17.jar"作为Log4j的早期版本,虽然没有最新的特性和改进,但它仍然在众多项目中发挥着关键作用,为开发者提供了高效、灵活的日志管理手段。掌握Log4j的使用,能够极大地提升我们的故障排查能力...

    log4j-1.2.17.jar及配置文件

    这个jar文件包含了Log4j 1.2.17的所有类和资源,是使用Log4j的基础。在Java应用程序中,我们通常会将log4j-1.2.17.jar添加到项目的类路径中,以便调用其API进行日志记录。例如,通过以下代码创建一个名为"DEBUG"的...

    log4j使用详细方法

    **日志框架Log4j详解** Log4j是Apache组织提供的一款开源的日志记录工具,广泛应用于Java开发中。...通过阅读提供的"log4j使用方法"文档,你将能更深入地了解Log4j的配置和使用技巧,为你的开发工作带来便利。

    log4j-2.15.0-rc2-log4j.zip

    通过使用Log4j-slf4j-impl,可以在项目中使用SLF4J的API,同时享受到Log4j的强大功能。这个版本同样考虑了与SLF4J接口的兼容性,确保了在不同日志框架之间的平滑迁移。 4. **Log4j-to-slf4j-2.15.0.jar**: 这是一...

Global site tag (gtag.js) - Google Analytics