后端日志系统

一、日志级别不是摆设

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

总结

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

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

相关推荐
程序员mine14 天前
HTTPS-TLS加密与证书完全指南(中)
网络协议·https·ssl
JLWcai2025100914 天前
铸造领域树脂砂轮|金利威多场景解决方案,20 + 配方覆盖全需求
mongodb·zookeeper·eureka·spark·rabbitmq·memcached·storm
我是一颗柠檬14 天前
【计算机网络全面教学】网络设备与故障排查,从集线器到Wireshark抓包实战Day7(2026年)
网络·计算机网络·wireshark
开发者联盟league14 天前
pnpm install报错ERR_SSL_PACKET_LENGTH_TOO_LONG问题解决
网络·网络协议·ssl
北极熊~~14 天前
win上编译带ssl的paho-cpp库
mqtt·ssl·源码编译mqtt库
GlobalSign数字证书15 天前
SSL证书过期致业务宕机?企业证书管理三大痛点与自动化方案
网络协议·自动化·ssl
一勺菠萝丶15 天前
宝塔 Docker 安装 Ubuntu 及启动失败解决流程
ubuntu·docker·eureka
专业机床数据采集15 天前
基于 Wireshark 抓包逆向设备通信协议,并用 C# UDP协议跨平台 实现宝元数控程序列表读取、上传、下载和删除
网络·测试工具·wireshark·程序传输·宝元数控·dnc·数控程序传输
GlobalSign数字证书15 天前
Nginx配置SSL证书教程:从零到HTTPS的完整部署指南
nginx·https·ssl