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

28 天前
 WillingXyz

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

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

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

ps:此人是我 leader 的 leader 。

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

13605 次点击
所在节点    程序员
145 条回复
Fca
28 天前
他可能属于那种不接受新鲜事物的人,内心鄙夷这种框架,你自己写他学习成本也会变低
fengpan567
28 天前
kpi 而已
sagaxu
28 天前
没什么好处,自定义 LogUtil 能做到的功能,在 Filter, Appender 层面完全可以做到。

LogUtil.info("code101", "xxx") 跟 log.info("code101", "xxx") 并无区别。
lucasdev
28 天前
没好处,楼上说到的日志格式、脱敏加密、监控采集等都可以通过项目中引用 sdk 来实现,不需要改代码形式。

再者说,封装的 LogUtil 的扩展性谁来保证,动来动去的更麻烦。
WillingXyz
28 天前
@tool2dx 我们当前的日志是排查问题用的,整个 code 对我排查问题没什么帮助,现在都有分词,还有 logger name 之类的来筛选。
日志格式是统一的,比如 level ,time ,threadname ,自定义 mdc 这些
unknown404
28 天前
@WillingXyz #13 为了以后的扩展变更还是需要的,万一出了一个比 slf4j 更好用的呢?或者需要对日志统一做一些额外处理呢?无规矩不成方圆,对于稍微大点的项目,应该全部禁止直接引用第三方包,而是需要自己包装下才可以,都是千万屎山得来的教训,等你坐到他那个位置,你可能要求比他更夸张
luobingit
28 天前
你别说 我还真见过用 LogUtil.info 这种的
lululau
28 天前
他是领导他说了算,建议类名叫 SBLogUtil ,要是领导问 SB 前缀是什么含义,你就说 Spring Boot 的缩写
neocanable
28 天前
太年轻了,没有被屎山教育过
WillingXyz
28 天前
@neocanable 屎山见多了,只是不知道 LogUtil 怎么防范屎山
boywang004
28 天前
纯技术上讲,他对 facade 理解不够或者能力所限……但是考虑到国情和企业环境,也许你有机会能理解他的做法。
HtPM
28 天前
他是架构师,你是程序员,你如果一下就理解了,他架构师的水分也太大了。
CodeCodeStudy
28 天前
LogUtil.info("code101", "xxx")

这样可以快速通过 code101 来排查啊
hafuhafu
28 天前
没任何好处,相当于进行了一次没有太大意义的封装,入侵性还大。
可能他不知道能直接扩展,基于自己的认知和经验就只是再包一层封装...
fredweili
28 天前
小的个人开发者的类库,我会封装 API ,防止跑路
slf4j 也要这么搞,太闲了吧
piecezzz
28 天前
纯纯浪费时间。
flmn
28 天前
相信你们肯定用了很多开源库吧,开源库也要打日志吧。slf4j 作为门面,很多开源库也是用它打日志。
下面问题来了,这些日志怎么办?让你们的架构师给这些开源库推 PR 吧,改用你们的;
或者,想到了人家不会接受,那就把用到的开源库都 fork 一份自己维护吧,这样接下来十年的 kpi 都有了……

这个架构师真是吃饱撑的。他厉害,可以替换 logback 啊,可以指定日志规范啊,制定规范,监督规范的执行,也是 kpi 啊。
ichou
28 天前
沟通问题不要尝试通过技术解决 [狗头]
chawuchiren
28 天前
需要看你们这个 logUtil 是不是为了特殊日志做准备的吧,比如你们日志比较多,存储有特异性(管道到某个公司内部的采集系统,二进制压缩存储等),高吞吐量(需要单独设计缓存区),复杂的上下文打印这些功能,只能如果架构师在推广一个 sdk 的时候无法说出理由,大概率就是一个 kpi 产物了
ghost3281
28 天前
可能是为了方便扩展?比如后续收集日志进行统计分析之类,自动收集 crash 等等

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

https://tanronggui.xyz/t/1100354

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

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

© 2021 V2EX