Java项目如何统一日志框架?
在程序运行的过程中,我们需要在重要的代码逻辑分支点,将关键的程序运行状态信息打印出来,便于我们对程序调试和观察。java项目中有成熟高性能的日志框架,很方便地集成到项目中实现我们对关键信息的打印输出。
当前java主流的日志框架有logback、log4j2、log4j1、jul等。
日志框架 |
简介 |
logback |
Ceki Gulcu于2006年设计的又一个开源日志框架,解决log4j1性能问题,目标是替代log4j1 |
log4j1 |
Ceki Gulcu于2000年设计的日志框架,Apache开源项目,目前已不再维护 |
log4j2 |
2010年起Apache开源项目,参考logback,解决log4j1设计缺陷及性能问题。采用LMAX Disruptor高性能线程间消息库,据官方性能测试比logback高。 |
jul |
java.util.logging Since JDK1.4.0 2002年发布 |
日志门面框架主要有SLF4J(Simple Logging Facade for Java)、JCL(Jakarta Commons Logging)。日志门面是日志输出的抽象接口,具体日志操作实现还需要调用具体的日志框架,日志门面框架可以方便地切换具体的日志框架,而无需修改代码。SLF4J支持logback、log4j1、logj2、jul,而JCL仅支持log4j1、jul。目前SLF4J比JCL流行,SpringBoot项目默认引入SLF4J+logback日志框架。
应用项目中如何统一日志输出呢?
在java项目中我们经常会引入不同的组件类库,这些组件类库有使用到的日志框架也不尽相同,不过最新的组件类库一般都使用了日志门面框架,由开发者根据项目情况引入具体的日志框架。如Spring框架、Fastjson组件等使用JCL门面日志框架,而Mybatis、Quartz等常见组件默认使用SLF4J。下面我们就SLF4J如何统一日志框架进行说明。
下图为SLF4J官网给出的技术原理图:
如上图,jcl日志通过jcl-over-slf4j.jar桥接将日志输出到slf4j-api,进而由具体的日志框架输出;类似的,log4j1通过log4j-over-slf4j.jar桥接,jul日志通过jul-to-slf4j.jar桥接,而最新的log4j2通过log4j-to-slf4j.jar进行桥接。
具体的pom.xml配置如下(参考):
注:未引入jcl-over-slf4j.jar,是因为jcl在没有引入log4j1时,默认使用jul输出日志,最终由jul-to-slf4j.jar进行桥接到slf4j上。
Springboot自动引入的日志框架
当创建Springboot项目,通过pom继承spring-boot-starter-parent,或项目中引入spring-boot-starter-web等jar时,则项目会自动默认引入spring-boot-starter-logging,通过分析其pom依赖:
1.5.9.RELEASE:
2.0.0.RELEASE
1 |
spring-boot-starter-logging默认使用logback日志框架 |
2 |
springboot logging已自动将日志统一到logback日志框架 |
3 |
spring-boot-starter-logging 2.0.0之后的版本,都移除了log4j1遗留日志兼容问题(毕竟log4j1不维护以很久,许多主流框架类库已采用其他日志框架),而增加了log4j2桥接到logback的配置 |
综上分析,只要Spingboot项目引入了spring-boot-starter-logging,即可将项目日志统一到logback日志框架,从而可灵活控制日志的输出格式或者归集日志到统一的日志中心。
Java项目如何统一日志框架?相关推荐
- hive 查看 job 日志_日均TB级数据,携程支付统一日志框架
一.背景 支付中心作为携程集团公共部门,主要负责的业务包括交易.实名绑卡.账户.收单等,由于涉及到交易相关的资金流转以及用户实名认证,部分用户操作环节的中间数据应内控/审计要求需要长时间保存.当前研发 ...
- Spring Boot统一日志框架
在项目开发中,日志十分的重要,不管是记录运行情况还是定位线上问题,都离不开对日志的分析.在 Java 领域里存在着多种日志框架,如 JCL.SLF4J.Jboss-logging.jUL.log4j. ...
- 12. Spring Boot统一日志框架
在项目开发中,日志十分的重要,不管是记录运行情况还是定位线上问题,都离不开对日志的分析.在 Java 领域里存在着多种日志框架,如 JCL.SLF4J.Jboss-logging.jUL.log4j. ...
- C#项目中使用日志框架Log4net
C#项目中使用日志框架Log4net 背景 准备条件 日志服务简单封装 使用封装的服务类记录日志 配置文件App.config/Web.config 背景 无论是软件的开发期间还是发布后的运维期间,日 ...
- Java中常见的日志框架
可能是太过于常见了,所以使得大家很少关注,只是要用到的时候复制粘贴一份就行,甚至连日志配置文件中的配置语法都不清楚.另外一方面,Java中提供的日志组件太多了,一会儿log4j,一会儿logback, ...
- 项目中统一日志文件配置
1.统一日志处理的目的: 将日志记录在文件中,方便运维和开发做错误排查 文件日志需要做滚动输出(输出到更多的日志文件中),避免单日志体积过大,拖垮服务器 可以方便的在开发环境和生产环境等环境中切换输出 ...
- 当当网java项目_基于S2SH框架开发当当网项目
这是一个当当网的示例源码,本人也是从网上下载下来进行学习的,收获良多,特此分享给各位大牛.采用的是S2SH框架,基本上的功能都实现了.比如注册,登陆,发送邮件等等.项目包里面有项目安装说明,相信各路大 ...
- Java项目:基于ssm框架个人博客系统多用户(计算机毕业设计)
本系统实现个人博客的主要基本功能有主界面,用户注册,用户登录,发表文章,浏览文章,发表评论等.这里主要是区分了个人博客的注册用户和游客.注册用户,可以在任何时候写下自己的主张,记录下自己的点点滴滴.而 ...
- java项目开发实例SSM框架实现的车位租赁管理系统|停车场计费系统
最新文章
- 代理模式详解(静态代理和动态代理的区别以及联系)
- Android之从网络上获取图片的两种方式讲解:thread+handle和AsyncTask方式
- 暗黑破坏神(背包)(内部模拟)
- Python基于值的内存管理真相
- 第 21 章 中介者模式
- input数字开头不能为0_Python新手上车5:数字和注释
- sshd启动报错解决:Missing privilege separation directory: /run/sshd
- mysql 虚拟表 分页_MySql大表分页(附独门秘技)
- 基姆拉尔森计算公式---计算星期几
- redis数据类型之List
- [转载] 科学家开发的新AI因过于危险而不敢发布
- Flutter与原生混合开发
- matlab景深合成算法,关于景深合成,你想知道的都在这儿!
- 51Nod 1677 treecnt
- 充电站网络安全风险危及电动汽车普及
- Python进行微信公众号开发
- Codeforces Round #717 Div.2
- powermock跳过某方法_PowerMock使用详解
- Elasticsearch - 压测方案之 esrally 简介
- 翻转课堂融入计算机课,“翻转课堂”教学模式在职业院校计算机课程中的应用...