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

9 天前
 WillingXyz

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

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

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

ps:此人是我 leader 的 leader 。

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

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

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

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


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

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

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

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

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

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

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

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

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

© 2021 V2EX