千家信息网

服务器中的日志框架是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了服务器中的日志框架是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇服务器中的日志框架是什么文章都会有所收获,下面我们一起来看看吧。故事开始在一家IT
千家信息网最后更新 2026年11月02日服务器中的日志框架是什么

这篇文章主要介绍了服务器中的日志框架是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇服务器中的日志框架是什么文章都会有所收获,下面我们一起来看看吧。

故事开始

在一家IT企业中,项目经理虎大力(龙套) 正在指挥 程序员鹿小明(精英龙套)开发一个大型的增删改查项目。为了开发这个项目。项目组仅有的程序员鹿小明每天工作996

故事进入 V1.0 环节

one day,虎大力给鹿小明提出来一个新的需求,为了更好的进行公司的信息化建设,虎大力想要看到代码执行的情况,执行到某个业务的时候在控制台有所表示,例如:执行到查询方法的时候,需要在控制台上出现,这是一个打印方法的信息。

鹿小明一想,这好办啊,本来自己为了调试测试方便就写过很多打印语句,现在无非更多而已。于是就加班加点在所有的增删改查方法中都写了System.out.println()打印语句。顺利完成了这个工作。

故事进入 V2.0 环节

一段时间岁月静好

one day,虎大力找到鹿小明:你这个代码里面System.out.println()太多了,我需要你做成,测试时候显示,上线之后不显示。你去搞一下。

鹿小明于是冥思苦想:我要不要上线的时候把打印语句注释掉,测试的时候再打开呢?

但是想到要经常开关注释也不是个容易的事儿,于是鹿小明一咬牙,996变007,废寝忘食的更新出了 V2.0版本。他把日志打印封装成框架 logging-1.0.jar,可以进行统一的开关。顺利完成了这个工作。

故事进入 V3.0 环节

一段时间岁月静好

one day,虎大力找到鹿小明:你这个日志框架功能太简单了 ,再搞点新功能,像输出到文件啊,异步啊都搞上。

鹿小明于是冥思苦想,007之后继续007,废寝忘食的更新出了 V3.0 版本,封装成一个新的框架logging-2.0.jar。顺利完成了这个工作。

故事进入 V4.0 环节

一段时间岁月静好

one day,虎大力找到鹿小明:1.0和2.0的api不一样,1.0换成2.0,2.0换成1.0 每次切换都要改代码,你改一下吧,改成可以想用哪个用哪个的。

鹿小明于是冥思苦想,007之后继续007,这个需求有点难,他从JDBC上找到了灵感,JDBC通过统一接口实现了驱动的切换,日志也可以。

于是,他爆肝搞出来一个日志接口层(日志门面),让 1.0 和 2.0的日志框架都实现这个接口,这样想用1.0的时候就导入1.0,想用2.0的时候就导入2.0 。顺利完成了这个任务。

而这个设计的结构也是现在主流日志框架:log4j logback log4j2 等的结构

日志门面(接口)日志实现
SLF4J,commons-loggingLogback,Log4j

通过它们就打印出了我们常见的各种日志信息

日志框架结构分析

日志框架实际上分为三个部分,除了上面提到的日志门面(接口)和日志库(实现),还有日志适配器

日志门面 接口规范

定义接口规范,不负责具体实现,也就是说以后代码中打印日志时调用的日志门面接口的方法。常见的有 SLF4J,commons-logging 都是这样。常见的日志门面有下面几种

日志门面(接口规范层)简介
JCL(Jakarta Commons Logging)这个jar就是常见的 commons-logging.jar,也是Spring框架中使用的日志门面。由于上一次更新还是在2014年,所以不建议使用
SLF4j(Simple Logging Facade for Java)这个jar可以说是最常用的日志jar包了
jboss-logging使用最少,一些特定的框架在使用

根据简单的分析,在我们的代码中如果要选择一款 日志的接口规范的话,毫无疑问,只有 SLF4j 配得上我们的项目。

日志库 代码实现

日志库是日志功能的具体实现,早期就是为了替代 System.out 语句而出现的。常用的日志库如下:

日志库(日志实现)简介
log4j最早诞生,用的也最多
logback最晚出现,和log4j同一作者,是log4j的升级版
log-jdkjdk 在1.4版本出现的java.util.logging 简称 log-jdk

在实际的开发中,log4j和logback的使用都非常的广泛,但是如果你现在要开发的是一个新项目,那么推荐使用 logback

日志门面适配器 又名 接口实现转换器

这个东西是啥呢?要从历史说起,在日志框架的历史中,并不是先有 日志门面(接口规范),后有日志库。实际的情况是 作者 先写出来 log4j 用了一段时间之后才有了 slf4j 。

Tips:

  1. slf4j log4j logback 是同一个爹(作者)

  2. log4j 可以等价于 鹿小明写的 1.0 那时候还没有接口规范

因为这个先后顺序的问题,就出现了一个很尴尬的情况,代码实现和接口不兼容,因为log4j的代码中没有实现slf4j的接口,所以要使用 slf4j+log4j的话,需要有个中间层(日志门面适配器)来解决接口的兼容问题。

举个例子:你买的超极本上没有网线插口怎么办呢?买个USB的转换器,这个装换器就是我们说的中间层,也就是 日志门面适配器。 slf4j+"转换器"+log4j 才能正常工作。

通过这样的设计模式,slf4j不仅兼容了log4j,还兼容了很多其他的日志框架。通过阅读slf4j官方文档 可以看到这样一张图

在图中标记了 1 2 3 4,对照前面的概念解释一下

标记1:这是只有接口规范,没有日志实现的情况,项目中只有接口没有实现也就不会有任何日志信息输出。

标记2:应用代码中使用logback作为日志库实现,通过图示可以看到logback是直接实现SLF4J接口的,不需要"转换器"。接口层+代码实现。这也是logback和log4j的区别之一。

标记3:应用代码中使用log4j作为日志库实现,这个图示在slf4j-api.jar之后,还有一个slf4j-log4j12.jar,他就是我们提到过的"转换器"日志门面适配器。接口层+转换器+代码实现 的关系。

标记4:这个图示中也有转接头jar包,只不过这个jar包是为了兼容log-jdk。

那么问题来了,logback和log4j在使用上有什么区别?

日志库适配器 又名slf4j如何一统日志江湖?

日志门面适配器"接口实现转接器"解决了接口规范和实现之间不兼容的问题。我们终于可以愉快的开始枯燥的日志打印了。

但是慢着,难道没有觉得哪里不对吗?你品,你细品

虽然我们的项目采用slf4j在快乐的打印日志,但是其他的框架用的可不是slf4j,譬如Spring(commons-logging)、Hibernate(jboss-logging),这种情况下 我们的项目的就像一个国家有了很多套法律,到底听谁的, 所以我们需要让别的框架和log4j一起统一使用slf4j进行输出日志?

咋能做到呢?这就要用到日志库适配器了。它也是一个转接头,举个栗子

slf4j 相当于只有type-c接口的苹果电脑。现在你有很多U盘想接到电脑上,但是U盘用的是USB接口,要怎么办呢?

买一个 type-c 转 USB的转换器即可

通过官方文档找到下面这张图-说明了 其他日志框架如何接入到slf4j上

这张图上有三个图示,由于三个的原理的都一样,我们以左上角的为例做简单的讲解:

这张图我们先竖着看,就是应用程序使用的logback做日志框架,接口规范+实现的简单关系。

接着我们横着看,会看到 commons-logging log4j(之前说过log4j生的早)log-jdk,这些就是应用中其他框架Spring等使用的日志框架,想让这些框架统一接入到slf4j, 怎么办呢?

以commons-logging为例,如果你的项目中用了Spring,Spring就需要使用到commons-logging.jar ,怎么让 Spring 的日志最终通过 slf4j 输出呢?

1.我们需要先排除 commons-logging.jar ,毕竟它压根儿就没有输出到slf4j的功能,但是排除之后spring会报错啊,不要慌 这就到了第二步。

2.用 jck-over-slf4j.jar 替换 commons-logging.jar, 这个包有什么作用呢?偷天换日,鸠占鹊巢,它就是我们要找的转换器,一方面它的功能和commons-logging一样,完全可以替代;另一方面,可以无缝接入到slf4j。

这个中间转换器包就是就是日志库适配器。

简单吧,通过上述两步就可以实现 commons-logging 统一到slf4j 。

通过这样的逻辑,可以很简单的把log4j,log-jdk 也都能通过中间的转换包统一到slf4j,也就实现了slf4j一统日志江湖。

关于"服务器中的日志框架是什么"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"服务器中的日志框架是什么"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

日志 接口 框架 门面 代码 小明 就是 转换器 适配器 项目 适配 时候 统一 情况 故事 标记 工作 输出 服务器 服务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 广州万易互联网科技有限公司 没上市的科技互联网公司 中国互联网科技发展 互联网科技公司有哪些 互联网金融监管科技 科技赋能互联网健康 博兴的互联网电子科技公司 互联网汽车科技小镇 天速互联网络科技有限公司 栖莱科技互联网股份有限公司 湖南一路畅行互联网科技 注册互联网科技公司经营范围大全 恒生互联网科技指数跳水 杭州披云加互联网科技有限公司 科技互联网行业投资研究 互联网科技的前景 恒生科技指数 中概互联网 山东蛋芒互联网科技有限公司 颐高云石互联网科技 互联网科技公司经营范围 互联网科技保险 成都仁贤领冠互联网科技有限公司 互联网科技创新服务 中国互联网公司排名锤子科技 洛阳共同富裕互联网科技有限公司 用友工业互联网科技发展 互联网金融科技名词解释 北京天晋互联网科技有限公司 科技互联网经济论坛
0