`
lenj
  • 浏览: 37538 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Log4j使用总结

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

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

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

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

    Log4j使用总结.doc

    总结来说,Log4j是Java开发中不可或缺的工具,它提供了一种灵活、可配置的方式来管理和记录应用的日志信息,帮助开发者进行调试、故障排查和性能分析。通过合理配置和使用,可以大大提高开发和运维效率。

    log4j使用总结,非常详细

    Log4j 是一个广泛使用的Java日志框架,它允许开发者灵活地控制日志信息的输出。这个框架由三个核心组件组成:日志信息的优先级、输出目的地和输出格式。优先级从高到低分为ERROR、WARN、INFO、DEBUG,用于区分日志的...

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

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

    log4j使用详解log4j使用详解

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

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

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

    Log4j使用实例

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

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

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

    log4j使用详细方法

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

    如何使用Log4j如何使用Log4j

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

    java 中log4j包总结的各个版本

    总结来说,Log4j-1.2.4是Log4j的一个经典版本,虽然功能可能没有最新版本强大,但在许多项目中仍然被广泛使用,尤其对于那些不追求最新特性的稳定项目。了解和掌握它的使用方法,可以帮助我们更好地管理和调试Java...

    log4j使用jar文件

    Log4j是一款广泛使用的Java日志记录框架,它允许开发者以灵活的方式控制应用程序的日志输出。这个框架的主要目的是提供一种简单、高效的日志记录机制,帮助开发者调试代码、追踪问题,以及收集运行时信息。在Java...

    apache log4j使用大全

    Apache Log4j 是一个广泛使用的开源日志框架,它为Java应用程序提供了强大的日志记录功能。Log4j 的主要优点在于它的灵活性和可配置性,允许开发者根据需要调整日志的输出目的地、格式以及级别。 **配置Log4j** ...

    log4j.rar log4j使用方法

    标题“log4j.rar log4j使用方法”暗示了我们要讨论的是一个关于log4j日志框架的压缩包文件,其中包含了如何使用log4j的指导资料。log4j是Java编程语言中广泛使用的开源日志记录工具,它允许开发者灵活地控制日志信息...

    log4j-1.2.15.jar

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

    log4j-1.2.17的jar包以及依赖包,还有一份log4j的配置文件,输出到控制台和文件夹两种配置

    总结来说,Log4j-1.2.17提供了灵活的日志管理功能,通过配置文件可以定制化日志输出的方式和内容,对于开发、调试和维护Java应用具有极大的帮助。尽管有更新的版本如Log4j2可用,但Log4j 1.x仍然在许多项目中得到...

    log4j jar包

    总结,Log4j作为Java日志处理的重要工具,其灵活性和强大功能使其在开发和运维工作中占据了重要地位。了解并熟练掌握Log4j的使用,有助于提升开发效率,优化系统的可维护性。然而,随着技术的发展,建议关注更新的...

    Log4J完整说明和配置

    - `org.apache.log4j.PatternLayout`:使用模式布局。 - `ConversionPattern`:定义输出的格式,例如`[framework]%d-%c-%-4r[%t]%-5p%c%x-%m%n`表示输出的信息包括框架名称、日期、线程ID等。 ##### 3.4 文件输出...

Global site tag (gtag.js) - Google Analytics