`

Java日志框架

 
阅读更多

Java日志框架

Log4j

Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;用户也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,用户能够更加细致地控制日志的生成过程。这些可以通过一个配置文件来灵活地进行配置,而不需要修改程序代码。

 配置文件log4j.properties or log4j.xml,Logger的由低到高级别如下: ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF 

 

java -Dlog4j.configuration=. \properties\log.properties YourAppName为什么一定要使用系统属性,而不在配置文件中指定呢?很显然,如果把它写入配置文件,那么,Log4J读到它时已经迟了。

 

LOGBack 
Logback是由log4j创始人设计的又一个开源日记组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日记系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日记的功能。

配置文件logback.xml

 

java.util.Logging

Java Logging API是sun公司于2002年5月正式发布的。它是自J2SE 1.4版本开始提供的一个新的应用程序接口。它能够很方便地控制和输出日志信息到文件,控制台或其它用户定义的地方,如数据库,电子邮件等。所以它是为最终用户,系统管理员,软件服务工程师和开发人员提供的一种捕捉安全漏洞,检查配置正确性,跟踪调查系统运行瓶颈和调查系统运行错误的工具。 Java Logging API提供了七个级别用来控制输出。分别是: 

SEVERE (最高级别) 
WARNING 
INFO 
CONFIG 
FINE 
FINER 
FINEST (最低级别) 

配置文件:logging.properties

 

Log4j vs. java.util.Logging

 

从JDK 1.4.0开始,引入了java.util.logging包。虽然Log4J小组曾竭力游说JCP(Java Community Process)采用Log4J作为JDK 1.4的“标准”日志API,虽然最终因Sun的日志API规范的负责人Graham Hamilton的一句“Merlin的开发已经到了最后阶段,这时不允许再对主要API做出改变”而没有被采纳,但Log4J还是对新的日志API产生了重要影响。那么,我们到底应该采用Log4J还是java.util.logging包呢?下面仅对两者做一简单的比较。

  1. Log4J更加成熟,从1999年10月开始至今已经有3年的时间,并且已经在许多项目中有着成熟的应用。

  而JDK中的logging包是在1.4之后才 引入的,并且不能运行于JDK 1.3之前的版本。Log4J则可以良好地运行于JDK 1.1之后的所有版本。

  2. Log4J已经被移植到多种环境下,包括log4c(C)、log4cpp(C++)、log4perl(Perl)、log4net(.net)等。在这些环境下,可以感受到几乎一致的配置和使用方式。这是JDK中的logging API所不能比拟的。

  3. Log4J还具有更加强力的格式化系统,可以使记录输出时实现简单的模式。但是,它不会增加类而导致格式化工具的扩展。众多的附加程序和处理器使得Log4J数据包成为一个绝佳的选择,所有你所需要的都可能加以实现。

  4. Log4J在性能上做了最大的优化。

  Logging API对于简单的使用是足够的,但它缺少了许多Log4J所具有的功能。所以,如果你需要一个强力的logging机制,就应坚持使用Log4J;而如果只是需要一些简单的控制或文件记录,那么可以使用已经内建在JDK之中的logging API。

虽然Log4J和JDK logging API是一种竞争关系,但在logging API还在JCP中讨论(JSR47)时,两者之间就已经开始相互影响了。

 
Log4J vs. LOGBack
LOGBack作为一个通用可靠、快速灵活的日志框架,将作为Log4j的替代和SLF4J组成新的日志系统的完整实现。LOGBack声称具有极佳的性能,“ 某些关键操作,比如判定是否记录一条日志语句的操作,其性能得到了显著的提高。这个操作在LogBack中需要3纳秒,而在Log4J中则需要30纳秒。 LogBack创建记录器(logger)的速度也更快:13微秒,而在Log4J中需要23微秒。更重要的是,它获取已存在的记录器只需94纳秒,而 Log4J需要2234纳秒,时间减少到了1/23。跟JUL相比的性能提高也是显著的”。


另外,LOGBack的所有文档是全面免费提供的,不象Log4J那样只提供部分免费文档而需要用户去购买付费文档。


SLF4J 
简单日记门面(Facade)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。 Logging API实现既可以选择直接实现SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通过SLF4J提供的API实现来开发相应的适配器如Log4jLoggerAdapter、JDK14LoggerAdapter。 

Apache Common-Logging
目前广泛使用的Java日志门面库。通过动态查找的机制,在程序运行时自动找出真正使用的日志库。但由于它使用了ClassLoader寻找和载入底层的日志库,导致了象OSGI这样的框架无法正常工作,由于其不同的插件使用自己的ClassLoader。 OSGI的这种机制保证了插件互相独立,然而确使Apache Common-Logging无法工作。
 
SLF4J vs. Apache Common-Logging
SLF4J库类似于Apache Common-Logging。但是,他在编译时静态绑定真正的Log库。使用SLF4J时,如果你需要使用某一种日志实现,那么你必须选择正确的SLF4J的jar包的集合。如此便可以在OSGI中使用了。
另外,SLF4J 支持参数化的log字符串,避免了之前为了减少字符串拼接的性能损耗而不得不写的if(logger.isDebugEnable()),现在你可以直接写:logger.debug(“current user is: {}”, user)。拼装消息被推迟到了它能够确定是不是要显示这条消息的时候,但是获取参数的代价并没有幸免。同时,日志中的参数若超过三个,则需要将参数以数组的形式传入,如:现在,Hibernate、Jetty、Spring-OSGi、Wicket和MINA等项目都已经迁移到了SLF4J,由此可见SLF4J的影响力不可忽视。
 
如果在单纯的logging环境中,使用SLF4J意义不大。如果想在各种logger API中切换,SELF4J是理想选择,另外在新的项目中,使用SLF4J+Logback是比较好的日志框架选型。
分享到:
评论

相关推荐

    java日志框架

    Java日志框架是Java开发中不可或缺的部分,它们用于记录应用程序的运行信息,帮助开发者追踪错误、调试代码以及进行性能分析。Log4j和Logback是其中最常用的两个框架,它们都由Ceki Gülcü创建,并且在设计上有着...

    JAVA日志框架适配-冲突解决方案.docx

    JAVA日志框架适配-冲突解决方案 本文将对JAVA日志框架适配中可能出现的冲突进行分析和解决,涵盖日志框架的基本概念、常见的冲突原因和解决方案。 日志框架的基本概念: 在JAVA中,日志框架可以分为两种:日志...

    Java日志框架整合详情

    Java日志框架是Java开发中不可或缺的一部分,它用于记录应用程序运行过程中的各种信息,帮助开发者在出现问题时进行调试和分析。日志框架的选择和整合对于一个项目来说至关重要,因为它不仅影响到开发效率,还直接...

    java日志框架-sl4f

    Java日志框架SL4J(Simple Logging Facade for Java)是一个接口层,它为各种Java日志库提供了一个统一的API。这个框架允许开发者在不修改代码的情况下切换不同的日志实现,如Log4j、Logback或Java内置的日志系统。...

    基于Java日志框架的Java日志学习项目设计源码

    该项目为Java日志框架学习而设计,包含43个文件,涵盖24个Java源文件、13个XML配置文件、4个属性文件、2个YAML配置文件,旨在通过实践加深对Java日志系统的理解。

    Java日志框架详解.ppt

    Java日志框架详解.ppt

    浅谈Java日志框架slf4j作用及其实现原理

    SLF4J(Simple Logging Facade for Java)是Java日志框架的一个抽象层,它的主要目的是为各种日志实现提供一个统一的接口。这使得开发者能够在不修改代码的情况下,自由地选择日志实现,如Log4J、Logback或Java内置...

    java日志框架视频教程

    常用日志框架章节二:JUL1. 快速入门2. 日志级别3. Logger直接父子关系4. 配置文件5. 原理解析章节三:Log4j1. 快速入门2. Log4j组件解析3. Layout格式4. Appender输出5. 自定义Logger章节四:JCL1. 快速入门2. ...

    采用jdk实现的日志框架

    总之,"采用JDK实现的日志框架"是一个基于标准Java日志API构建的系统,它可以满足基本的日志需求。然而,为了实现更复杂的功能和优化性能,开发者可能需要探索和扩展这个框架,或者转向其他更强大的第三方日志解决...

    了解Java日志系统框架的设计与实现.pdf

    1. **Log4J**:灵活性强,但配置复杂,是早期Java日志框架的代表。 2. **JDK1.4 Logging Framework**:吸收了Log4J的理念,成为JDK的一部分,提供了简单的实现。 3. **Commons Logging Framework**:提供统一接口,...

    【Java 小型简单日志框架】

    一个简单的日志框架,很早写的,五一闲了两天,修一修注释一下拿出来共享。。。。。。 注意: 该日志框架五脏不全。。。。。 改进意见: 1.可以在配置文件中添加日志输出格式,然后在代码中读取该格式用以控制输出...

    minlog:小型的java日志框架

    &lt;groupId&gt;com.esotericsoftware&lt;/groupId&gt; &lt;artifactId&gt;minlog &lt;version&gt;1.3.0 &lt;packaging&gt;bundle&lt;/packaging&gt;

    logback (Java 日志框架) v1.1.8

    logback (Java 日志框架)简介Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-...

    java分布式日志系统.zip

    3. **Java日志框架** - Log4j:经典日志框架,提供了灵活的日志配置和多种Appender(如文件、数据库等)。 - Logback:由Log4j作者设计的新一代日志框架,性能优于Log4j。 - SLF4J(Simple Logging Facade for ...

    java日志解决方案java问题解决日志第一版.pdf

    本篇主要介绍一些基础的日志概念、常用的Java日志框架以及如何有效地解决Java日志问题。 1. 日志的重要性 日志在软件开发中起到关键作用,它可以记录程序的执行流程,便于排查问题,特别是在分布式系统中,日志...

    全面掌握JAVA日志体系.pdf

    Java日志框架的发展历程中,涌现出了许多知名的组件,例如log4j、logback、log4j2以及Java内置的日志API(java.util.logging,简称JUL)。这些框架各有特点,选择哪一种通常取决于项目需求和性能考虑。 - **log4j**...

    java 日志系统软件源代码.zip

    二、常见Java日志框架 1. Log4j:Apache的Log4j是Java中最广泛使用的日志框架,提供了丰富的API和灵活的配置,支持多种输出方式,并且性能优秀。 2. Logback:由Log4j的创始人创建,作为其后继者,Logback在性能上...

    Java日志体系全解析:架构师必掌握的关键技术和最佳实践

    1. **log4j**:早期的Java日志框架,因其简单易用和功能强大,成为许多项目的首选。log4j提供了丰富的日志级别和定制化配置。 2. **JUL (java.util.logging)**:随着Java平台的发展,Oracle在JDK 1.4中引入了JUL,...

Global site tag (gtag.js) - Google Analytics