百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何选择Java日志框架(java系统日志框架)

ccwgpt 2024-10-01 08:12 45 浏览 0 评论



前言

日志对程序的重要性毋庸置疑,它可以用于监控,调试和分析等。目前有许多开源的Java日志框架,各有千秋。作为开发者,在一个项目中应该选择哪一个框架?下面我们就一起来看一下。

主流的日志框架

Java日志框架可以分为两大类:一类是日志引擎(Logging Engine),这类框架实现了输出日志的功能;另一类是日志门面(Logging Facade)。这类框架主要是一个抽象层,提供了通用的日志API,可以与具体的日志引擎集成,属于门面(Facade)模式的一个典型应用。

日志引擎主要有以下几个:

Log4J1: Log4J1是Apache的一个开源项目,在 1999 发布第一个版本,然后快速的成为最多人使用的日志记录框架。但Log4j 1 中存在一些架构问题和发布过程的缺陷,使得开发和维护变得困难。2015年8月5号,官方宣告Log4j 1 版本寿终正寝,不再提供官方支持。

Log4J2:Log4J2是Log4J1的升级版。它的架构被重写、速度快、更可靠,也更容易开发和维护。

Logback:LogBack和Log4J1都出自Ceki Gülcü之手。logback分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是Log4J1的一个改良版本。logback-access模块与Servlet容器集成,可以通过Http来访问日志。

Java Util Logging (JUL):JUL是java.util.logging包的简称,是JDK在1.4版本中引入的Java原生日志框架。这个框架有点鸡肋,没有开源实现优秀。开发小的Java应用或者做编程练习时用一下还是还方便的。

日志门面主要有:

SLF4J:SLF4J是Simple Logging Facade for Java的缩写,它是对日志功能的抽象,提供了通用API,支持各种具体的日志引擎。SLF4J 的作者也是Ceki Gülcü(简直就是日志框架专业户)。

JCL:是Apache Commons Logging的缩写,Apache出品。和SLFJ类似,它也是通过抽象提供了一个中间层。

以上各个框架的核心功能都类似,这里不详细展开,有兴趣的读者可以去官网查看。

下面是各种框架的日志级别比较:



可见,JUL提供的级别最多,有些级别区分起来很困难。

如何选择框架

第一个需要回答的问题是要不要用日志门面。

首先来回顾一下什么是门面(Facade)模式,看下图:



门面的主要作用是隔离客户代码和底层实现,即解耦。这样在更换底层实现时就不会影响到客户代码。因此使用日志门面带来的很大好处就是可以在上层无感知的情况下根据需要更换日志引擎。

其次,日志功能几乎是每个类库或框架都需要的。如果没有日志门面,类库或框架使用的日志引擎会五花八门,你在集成这些类库或框架时候,日志配置文件的配置和维护是不是很麻烦?如果用了日志门面,你的应用中就可以统一使用一个日志引擎。

当然,使用日志门面也会有缺点,比如日志门面的发展可能滞后于日志引擎的发展,有些特性无法很好的支持等。

但总体而言,使用日志门面的利大于弊,应该采用。有些公司(比如阿里巴巴)明确规定必须使用日志门面。

既然要用日志门面,接下来的问题就是选用哪个日志门面。这个问题不是很复杂,毕竟主流的开源实现只有JCL和SLF4J两种。让我们看一下这个图:


SLF4J胜在简单,稳定并且高效,所以应该选择SLF4J。

日志门面必须搭配日志引擎。该选哪个引擎呢?由于日志引擎的主要功能类似,所以性能是选择的主要考量。根据[5],无论是异步写日志还是同步写日志,log4J2都是最佳的选择:





总结

总之,日志门面+日志引擎是选择日志框架的推荐做法。具体来讲,SLF4J+Log4J2是本夫子的推荐套餐。当然,实际项目中会有某些特定的考量,碰到特别的情况还要具体问题具体分析。

相关链接

1、log4j1

http://logging.apache.org/log4j/1.2/

2、SLF4J

https://www.slf4j.org/

JCL: http://commons.apache.org/proper/commons-logging/

3、The Logging Olympics:

https://blog.takipi.com/the-logging-olympics-a-race-between-todays-top-5-logging-frameworks/

4、Simplifying the distinction between SL4J and commons logging

https://jayunit100.blogspot.com/2013/10/simplifying-distinction-between-sl4j.html

5、performance:

https://logging.apache.org/log4j/2.x/performance.html

6、Log4J2

http://logging.apache.org/log4j/2.x/

私信回复学习免费领取最新学习资料

相关推荐

自己动手写Android数据库框架_android开发数据库搭建

http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...

谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic

智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...

工信部:着力推动大模型算法、框架等基础性原创性的技术突破

工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...

乒乓反复纠结“框架不稳定”的三个小误区

很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...

前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈

IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...

三种必须掌握的嵌入式开发程序架构

前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...

怪不得别人3秒就知道软考案例怎么做能50+

软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...

UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透

10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...

勒索软件转向云原生架构,直指备份基础设施

勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...

ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来

在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...

APP 制作界面设计教程:一步到位_app界面设计模板一套

想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...

MCP 的工作原理:关键组件_mcp部件

以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...

软件架构_软件架构师工资一般多少

软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...

不知不觉将手机字体调大!老花眼是因为“老了吗”?

现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...

8000通用汉字学习系列讲座(第046讲)

[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...

取消回复欢迎 发表评论: