后端日志系统

一、日志级别不是摆设

刚入行那会儿觉得日志随便打打就行,后来被线上问题教做人了。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个!所以上线前必须用安全扫描工具过一遍!

总结

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

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

相关推荐
Warren981 天前
接口测试理论
docker·面试·职场和发展·eureka·ansible
Genie cloud2 天前
1Panel SSL证书申请完整教程
服务器·网络协议·云计算·ssl
mftang2 天前
现代互联网安全的基石: SSL/TLS技术介绍
服务器·网络·ssl
吠品2 天前
什么是 IP SSL 证书?该如何申请
网络协议·tcp/ip·ssl
JoySSLLian3 天前
IP SSL证书:一键解锁IP通信安全,高效抵御网络威胁!
网络·人工智能·网络协议·tcp/ip·ssl
江湖有缘3 天前
轻量级知识协作平台搭建:Docker + MediaWiki入门教程
docker·容器·eureka
七夜zippoe3 天前
Docker容器化Python应用最佳实践:从镜像优化到安全防护
python·docker·云原生·eureka·容器化
Knight_AL3 天前
Dockerfile 的 EXPOSE 和 Docker Compose 的 ports 有什么区别?
docker·容器·eureka
云小逸3 天前
【网络通信】Wireshark 教程与抓包实战
网络·测试工具·wireshark
zhaotiannuo_19983 天前
渗透测试之wireshark
网络·测试工具·wireshark