线上接口报 500,去日志里搜订单号,翻到的却是测试站半小时前的请求,两个环境的记录混在一个 app.log 里,时间还都是本地时间。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,两边的日志路径都指向同一个挂载目录,文件名也一样。日志里没有环境字段,只能靠域名猜,测试流量还会把线上记录冲掉。
「多环境日志混写」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。改完顺手把文档补一句,省得下次自己重新推一遍。
error_log /var/log/nginx/staging.error.log; # PHP 侧 error_log = /var/log/php/staging-error.log
监控和日志的时间要对上,时区不一致会多绕很大一圈。
具体做法是,每个环境写独立目录,路径里带环境名;日志格式统一加上环境标识和请求 ID;测试站降低日志级别,别把调试信息写进共享盘;按天切分并保留七天,避免单文件过大。
最后用这个标准收尾,在线上日志里按订单号能直接搜到对应请求,不再混入测试域名,两个文件按天独立切分。
