公司的架构师要求把日志封装成 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 条回复
MasterC
270 天前
没有明显坏处或者缺陷的话,统一编码规范这种事情,还是听领导的
expkzb
270 天前
是不是怕哪天爆出来 slf4j 有漏洞啥的
000sitereg
270 天前
如果以后支持多语言....
rockxsj
270 天前
你是领导他是领导? 如果你要拒绝工作安排也是你要拿出来切实的统一日志 sdk 的明显缺点,而不是要他拿出来优点,如果你拿不出来那就老实做就完了。
edotac
270 天前
没啥用,数据脱敏、数据清洗更好的实践定好日志采集格式,各个项目在 CICD 过程上上报日志目录,然后专门的服务来采集分析。
而不是每个技术栈维护一个 LogUtil 来上报一定格式的日志
wenjun19931112
270 天前
1 、数据脱敏(统一做脱敏规则)
2 、日志收集(当你做多实例集群部署的时候,需要将多个实例的日志汇总收集,不然关键日志很难找)
3 、使用 code 方便监控(运维人员可以通过统计日志中的 code 做运营级别、系统级别的告警。如某个时间内注册用户激增、某一个异常报错树超过阈值)
kerb15
270 天前
@WillingXyz #17 既然是+2 ,那他管辖范围内的人都得无条件用吧,以他的名义去 push
Suaxi
270 天前
别纠结了,按领导的要求来就完事了(领导要的是干活的组员按他的要求来,很多时候自己心里知道就行)
encro
270 天前
需要的可能是:

log = get_logger("name")
log.info(xxxx,[ddadasdf])
encro
270 天前
要的就是一个统一的 log 而已。

这样修改 log 时候比较方便。先简单,后复杂,向后兼容。
encro
270 天前
就是为了统一,方便以后修改日志的处理和存储,并没有什么很多需要解释的。


如果楼主这个不能想到,
哎,
建议早点转行。。。
不是我打击你。。。
encro
270 天前
建议学习:

高内聚松耦合,高扇入低扇出
Rorysky
270 天前
自主可控 打破国外垄断
cornorj6
270 天前
这么多人讨论,有没有一种可能架构师之前搞其他语言的,习惯了 LogUtil 这种打日志的方法? java 中 slf4j 以及非常好用了,根本不需要封装。话说回来,日志系统都是标配了,根本不需要考虑那些落在哪里。比如 k8s 你打在本地就行了,剩下是日志系统干的事儿。
lucasdev
270 天前
@Feiex 这些对 Java 生态来说都不是问题,都有很成熟的方案,写在统一的 sdk 即可。
楼主也补充了,“统一日志框架、统一日志格式已经做了,通过提供 sdk 实现的。”

关于你提到的几点,分别有:1. logback filter 2. logback converter 3. MDC

但看了下楼主已经找架构师沟通过几次了,那就封装呗,干嘛跟领导做对。
kilakilia007
270 天前
@dcsuibian 1.1 Thread 可以获取调用栈
rangoBen
270 天前
LogUtil.log 是给你提供一个接口。
至于下面的实现是什么,以及后续他要再加什么,甚至是换一个日志打印内核,你不需要关心。这对业务对架构都是有好处的。
zhaokun
270 天前
项目多了可以增加项目标识,然后有开源平台抓取项目标识遇到错误主动往企微群里通知,项目少怎么弄都可以
hdfg159
270 天前
工作久了心累了,我觉得领导怎么说怎么做,属于公司盈利项目不要较真,又不是个人项目或者开源项目,这种环境下,代码能跑就行;如果有能力,可以去开源社区给日志框架提交 新功能增强拓展,这是应该做的。

从技术角度,个人觉得,都能通过日志框架拓展实现各种功能,不需要封装
dcsuibian
270 天前
@kilakilia007 这个我知道
但是 Thread.currentThread().getStackTrace()会创建一个调用栈数组吧。我不清楚的是,如果高频调用的话,那么这个数组的创建是否会影响到日志框架的性能和 jvm 的内存占用。

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

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

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

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

© 2021 V2EX