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

1 天前
 WillingXyz

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

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

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

ps:此人是我 leader 的 leader 。

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

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

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

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

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

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

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

https://www.v2ex.com/t/1100354

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

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

© 2021 V2EX