当前位置: 首页 > news >正文

java常见日志理解

现今Java日志领域被划分为两大阵营
Commons Logging阵营和Slf4j阵营
Commons Logging在Apache大树的笼罩下,有很大的用户基数。但有证据表明,形式正在发生变化。2013年底有人分析了GitHub上30000个项目,统计出了最流行的100个Libraries,可以看出Slf4j的发展趋势更好:

java常用日志框架关系
Log4j 2与Log4j 1发生了很大的变化,Log4j 2不兼容Log4j 1。

Commons Logging和Slf4j是日志门面(门面模式是软件工程中常用的一种软件设计模式,也被称为正面模式、外观模式。它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用)。Log4j和Logback则是具体的日志实现方案。可以简单的理解为接口与接口的实现,调用者只需要关注接口而无需关注具体的实现,做到解耦。

比较常用的组合使用方式是Slf4j与Logback组合使用,Commons Logging与Log4j组合使用。

Logback必须配合Slf4j使用。由于Logback和Slf4j是同一个作者,其兼容性不言而喻。

Slf4j与其它日志组件的关系说明
Slf4j实现机制决定Slf4j限制较少,使用范围更广。由于Slf4j在编译期间,静态绑定本地的LOG库使得通用性要比Commons Logging要好。

Slf4j的设计思想比较简洁,使用了Facade(美[fə’sɑd]英[fə’sɑːd]n.外表;(建筑物的)正面;网络外观;外观模式;)门面模式设计模式,Slf4j本身只提供了一个slf4j-api-version.jar(例:slf4j-api-1.5.8.jar)包,这个jar中主要是日志的抽象接口,jar中本身并没有对抽象出来的接口做实现。

常见组合:

Slf4j与其它日志组件关系

相关文章:

  • cobbler使用入门(未完整,待修改)
  • Externalizable和Serializable序列化与关键字transient
  • nmon系统监控工具
  • oracle官方文档使用
  • FlashBuilder(FB/eclipse) 打开多个无效
  • python 读写文件时,r、rt、rb、r+的区别
  • 类什么时候被加载
  • 【异构计算】OpenCL矩阵转置
  • Lazy initialization holder class模式
  • 基于HTTP的WEB服务器端口映射
  • 静态常量(static final)在class文件里是如何的呢?
  • IOS管理文件和目录
  • WIN7实现多用户远程桌面
  • Linux下rsh服务配置
  • Extjs Ext.ux.IFrame的用法 以及父子窗口间函数相互调用
  • 《深入 React 技术栈》
  • CSS 专业技巧
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • iOS小技巧之UIImagePickerController实现头像选择
  • JWT究竟是什么呢?
  • maven工程打包jar以及java jar命令的classpath使用
  • Redux系列x:源码分析
  • vue2.0项目引入element-ui
  • 阿里云Kubernetes容器服务上体验Knative
  • 大整数乘法-表格法
  • 你真的知道 == 和 equals 的区别吗?
  • 前嗅ForeSpider教程:创建模板
  • 算法-插入排序
  • 温故知新之javascript面向对象
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一个JAVA程序员成长之路分享
  • #Linux(Source Insight安装及工程建立)
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $.proxy和$.extend
  • (二)Linux——Linux常用指令
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (理论篇)httpmoudle和httphandler一览
  • (三)c52学习之旅-点亮LED灯
  • (图)IntelliTrace Tools 跟踪云端程序
  • (学习日记)2024.01.19
  • (一)WLAN定义和基本架构转
  • (轉)JSON.stringify 语法实例讲解
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CLR Hosting 简介
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • /usr/bin/env: node: No such file or directory
  • @Builder用法
  • [ C++ ] 继承
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [100天算法】-实现 strStr()(day 52)
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [Angularjs]ng-select和ng-options
  • [C#]科学计数法(scientific notation)显示为正常数字
  • [IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式