Yii框架使用FileTarget如何避免error、warning日志重复记录?
机制说明
这是Yii日志组件的默认设计,并非异常问题。
Yii的日志分发逻辑为:所有已注册的日志target会独立校验当前日志是否匹配自身的categories、levels、except规则,只要匹配就会写入对应存储。只要一条日志同时符合多个target的匹配规则,就会出现重复写入的情况。
你遇到的仅warning、error级别重复写入,info级别不重复的现象,是因为默认app.log对应的target默认配置的levels仅包含warning、error,没有开启info级别捕获,所以info级别的import.category日志只会被你自定义的target匹配,不会写入app.log。
解决方法
修改默认app.log对应的FileTarget配置,添加except参数排除你的自定义日志类别即可:
// 找到配置文件中写app.log的日志target配置,新增except项 [ 'class' => yii\log\FileTarget::class, 'logFile' => '@runtime/logs/app.log', 'levels' => ['warning', 'error'], 'except' => ['import.category'], // 加入该行后,该类别的日志不会再写入app.log // 其余原有配置保持不变 ]
内容的提问来源于stack exchange,提问作者pepe_botika69
相关产品推荐
相关产品推荐

