公司的架构师要求把日志封装成 LogUtil 类,提供 sdk 给各团队使用,并且不允许使用 slf4j 直接打印日志,请问各位这么做有哪些好处(我还没想到任何好处)?

270 天前
 WillingXyz

所有的日志打印都通过 LogUtil 类,并且日志上还得加上 code 来区分,比如 LogUtil.info("code101", "xxx")。 不能直接使用 slf4j 的 log.info("xxx")。

我完全不能理解这种操作,和他讨论了很多次,我觉得这样没有任何好处,因为 slf4j 本来就是一个门面,并且 logback 等实现提供了 Filter ,Coverter ,Appender 等扩展,完全可以通过 logback 来实现扩展,而不是侵入业务代码,并且业务也很难都改成这种方式啊。

他说是为了统一入口,便于以后扩展。但给不出具体的例子。工作了十几年了,都没产生好处,还要坚持封装。

ps:此人是我 leader 的 leader 。

请问:封装成 LogUtil 是否真的有好处,且相比 logback 扩展实现的更好,只是我没有想到,欢迎各位指点

16519 次点击
所在节点    程序员
145 条回复
sxms77777
270 天前
1. 以后换了日志框架,业务层不会有任何修改
2. 单元测试方便 mock
3. 模糊业务对细节的了解,防止他们使用一些不科学的 api
sxms77777
270 天前
@sxms77777 再补充下,如何需要一些对日志框架做拓展,也无需改到业务
jackwang123
270 天前
感觉收益不大,完全不需要这样做,大面积推广一个东西,必须有充分的理由和解决实际问题为目的。
cccvno1
270 天前
打工混日子你和 leader 较什么真呢,他最起码知道 logutil 不会出大问题,技术选型肯定选自己熟悉的。
bk201
270 天前
@sxms77777 你说的这些现在的日志框架不能实现吗? slf4j 换日志框架那么方便。而且日志框架就打印字符串,有啥复杂的 api 我是没太理解
kinkin666
270 天前
统一成一个不用动脑的样子不好吗,不然

private static final java.util.Logger LOGGER
public final static slf.Logger logger
private logback.Logger loger
private log4j.logger log

更爽吗?虽然最后都是 logback
dxddd
270 天前
绝对有好处啊。结合调用链,有利于跨平台日志收集、分析、追踪,不过前提是,你公司的得有这些基础设施。
fpure
270 天前
不过说实话,我还挺喜欢 LogUtil 这种静态工具类打印日志的用法,不需要在类里面专门声明一个变量,免得老是没用上然后报 unused warning
ChefIsAwesome
270 天前
多干点活,不然天天没事,把你们裁了。这叫供给端改革,不用管消费端需不需要。
CloveAndCurrant
270 天前
不但毫无意义,反而会增加定位难度,日志自动携带的代码,类等信息已经方便定位了,加"codexxx"这种需要人为手动填写,全靠人为约束的东西,只会增加日志定位的复杂度。
COW
270 天前
那你就封装 slf4j ,把 code 码注入进去要求必传参数就好了呗,反正 slf4j 就是抽象出来的,你上面多抽象一层。
lucasdev
270 天前
@bk201 #65 这个帖子挂在"程序员"节点下,而不是"Java"节点下,感觉很多回复是对 Java 生态不太了解。看了你的几条回复,我和你的观点是比较一致的😁
meeop
270 天前
挺好的,但是如果你是业务团队,要提要求:
1 兼容目前 slf4g 所有 api ,业务侧无改动成本
2 如果因为 logUtil 导致的 bug 和故障,要架构师负责
git00ll
270 天前
哈哈习惯就好。jsonutil ,datautil ,redisutil ,cacheutil ,stringutil ,lockutil 还少吗
lyxxxh2
270 天前
你用其他方法打印日志,不就是找喷。
lyxxxh2
270 天前
扩展也可以理解。
后面可能考虑,丢 es 其他产品的日志呢,或者更加自定义的操作。
lucasdev
270 天前
楼主可以问问 AI ,我把问题直接丢给了 gemini 2.0, claude 3.5 sonnet, gpt-4o ,似乎都更推荐 SLF4J + Logback

ZeroDu
270 天前
很多人可能不了解 java 生态下的 SLF4J ,什么动态日志级别,源码级别的日志过滤,这些都是自带的。相比其他语言来说真的是很完善了。
zhady009
270 天前
@git00ll 完全不能理解这种行为,库都提供好了非得自己再包一层然后弄成 static ,然后 util 对外暴露的 api 还更少了想用的时候又自己加一个方法。
ldyisbest
270 天前
职业生涯最重要的一课是,你需要认识到,你工作的目的不在于使得公司的客户满意,而在于使得那些控制你的加薪、奖金和晋升的人满意。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1100354

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX