后端日志系统

一、日志级别不是摆设

刚入行那会儿觉得日志随便打打就行,后来被线上问题教做人了。DEBUG/INFO/WARN/ERROR这几个级别真得琢磨清楚:

DEBUG:比如循环里每条数据的状态跟踪,记得一定要用isDebugEnabled()包起来,否则字符串拼接能给你性能干崩

INFO:关键业务流程节点必须留痕,比如"用户158支付订单完成,金额299"

WARN:别人调我接口参数传错这种,不能算错误但要监控

ERROR:捕获异常时务必带上上下文参数,别光打e.getMessage()

(掏心窝子)见过最坑的是把第三方接口超时打成INFO的,监控告警完全没触发,半夜被叫起来扩容数据库!(捂脸)

二、日志输出得讲武德

格式规范:时间戳+级别+线程名+类名+业务ID这五大金刚不能少。推荐用JSON格式,ELK收集起来那叫一个丝滑

异步写入:同步写日志阻塞业务线程的惨案年年有。Logback的AsyncAppender配置队列大小2048起步,discardingThreshold设为80防止内存溢出

日志分离:

(突然激动)前两天发现个骚操作:有人把MyBatis的SQL日志打到单独文件,结果磁盘三天写满!切记要设置maxHistory和totalSizeCap啊兄弟们!

三、追踪链路不能丢

现在都是分布式系统,一个请求经过十几个服务:

在过滤器里生成traceId塞到MDC

RPC调用时通过header传递

线程池场景要用TTL做线程间传递

最终在日志配置里统一添加%X{traceId}

(敲黑板)特别注意:MDC用完一定要clear!上次有个兄弟忘记清理导致traceId串到其他请求,查问题查得差点怀疑人生!

四、日志收集有讲究

ELK三板剑搭建起来之后:

Filebeat配置多行合并(异常堆栈必须合并处理)

Logstash管道里用grok解析复杂格式

ES索引按周创建,别傻乎乎按月创建(查询速度差三倍)

Kibana做统计看板:错误数TOP10接口、慢查询趋势图必备

(压低声音)说个真实案例:某电商大促时日志量暴涨,Kafka集群被日志灌崩,连带订单服务雪崩。所以一定要给日志Topic单独配置集群!

五、实战避坑指南

日志位置:别写根目录!放专属挂载盘,iops单独监控

参数占位:("订单{}金额异常", orderId) 比字符串拼接性能提升40%

敏感信息:身份证/手机号必须脱敏,正则替换一步到位

日志清理:crontab里写find -mtime +7 | xargs rm -f 这种骚操作会误删!用logrotate配压缩策略

(突然严肃)最后说个血的教训:某金融公司日志打了用户银行卡密码!虽然很快就删了,但审计过来直接罚了200个!所以上线前必须用安全扫描工具过一遍!

总结

好的日志系统就像行车记录仪,平时觉得占空间,出事时就是救命稻草。建议大家每个月做一次日志复盘,看看哪些该打的没打,哪些不该打的瞎打。记住:日志打得好,加班加到老(划掉)故障追得少!(狗头保命)

(举手)下次想听什么实战技巧?评论区告诉我,安排!

相关推荐
薛之谦_8 小时前
国际SSL证书与国密SSL证书:专业视角下的全面解读
网络·网络协议·ssl
梅梅绵绵冰1 天前
Docker容器化平台
docker·容器·eureka
jiao糖瓜子1 天前
Docker 完全指南:从镜像容器到生产部署
docker·容器·eureka·镜像·仓库
阿钱真强道2 天前
49 极物科技 | knxd - Wireshark抓包与总线监控
wireshark·抓包分析·极物·极物智能·极物科技·knx协议·knxd
2601_967019512 天前
服务器SSL配置要点,规避HTTPS访问异常风险
服务器·https·ssl
yanwumuxi2 天前
Milvus使用和改进
云原生·eureka·milvus
xhaxy3 天前
docker
docker·容器·eureka
一技安身3 天前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
啊阿狸不会拉杆4 天前
《计算机网络-自顶向下方法》4.6 小结、课后习题与Wireshark实验 读书笔记
计算机网络·wireshark·智能路由器
Lsetea4 天前
ACME 报 rate limit:Let‘s Encrypt 限速类型与重试策略
运维·https·证书·ssl·acme