SLF4J(五) - Marker使用的误区- 源码分析

本文分析了SLF4J Marker在使用过程中可能存在的误区,特别是通过日志实现类创建Marker的方式可能导致替换日志框架时的不兼容问题。解释了为何这种方式能工作,以及如何正确使用SLF4J的MarkerFactory。同时,详细探讨了MarkerFactory如何与Log4j绑定,并对BasicMarkerFactory进行了简要说明。
摘要由CSDN通过智能技术生成

在之前的文章中我也分享过,如何去使用Marker标记不同的日志来源, 用来简单的做日志分类, 但最近发现使用的过程中有误区,可能会导致以后的替换日志实现框架的时候出现不兼容的问题。

以Log4j的实现为例

误区

使用日志实现类的Marker来创建Marker,如以下的代码:

import org.apache.logging.log4j.MarkerManager;
import org.apache.logging.slf4j.Log4jMarker;
import org.slf4j.Marker;

private static final Marker MARKER = new Log4jMarker(MarkerManager.getMarker("test_marker"));

这样使用起来是没啥问题,但如果把日志框架Log4j给替换掉的时候,就不能做到无痛替换,项目中所有这样创建Marker的地方都必须修改,这样就失去了使用SLF4J的意义。

为什么这样写也能使用呢?

因为Log4jMarker继承了org.slf4j.Marker
继承关系

正确的使用方式

import org.slf4j.Marker;
import org.slf4j.MarkerFactory;

private static final Marker MARKER = MarkerFactory.getMarker("test_marker");

slf4j.MarkerFactory是怎么绑定到log4j的呢?

看看MarkerFactory的源码就知道了


import org.slf4j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值