我有一个Yii
应用程序与许多并行控制台作业写入一个数据库。由于高并发性有时我会遇到MySQL死锁错误。有时候这些可能太多了。 console.log
文件变得太大,并且转化为更多费用。我想防止记录特定的CDbException
实例,或者至少完全禁止它们(我正在处理异常并可以从那里生成更紧凑的日志语句)。记录到Yii console.log更少的条目
YII__DEBUG
已经被注释掉。
任何人都可以请帮我弄清楚如何做到这一点?
非常感谢!
问候。
我有一个Yii
应用程序与许多并行控制台作业写入一个数据库。由于高并发性有时我会遇到MySQL死锁错误。有时候这些可能太多了。 console.log
文件变得太大,并且转化为更多费用。我想防止记录特定的CDbException
实例,或者至少完全禁止它们(我正在处理异常并可以从那里生成更紧凑的日志语句)。记录到Yii console.log更少的条目
YII__DEBUG
已经被注释掉。
任何人都可以请帮我弄清楚如何做到这一点?
非常感谢!
问候。
我决定修改记录失败SQL的yii/framwework/db/CDbCommand.php中的日志语句。我将它转换为trace语句:
Yii :: trace(Yii :: t('yii','CDbCommand :: {method}()failed:{error}。执行的SQL语句是:{sql} 。',array('{method}'=> $ method,'{error}'=> $ message,'{sql}'=> $ this-> getText()。$ par)),CLogger :: LEVEL_ERROR, 'system.db.CDbCommand');
我无论如何捕捉异常并记录一个更紧凑的句子版本,所以我可以做到这一点。
这是我能找到的最简单的方法。我们不会经常升级Yii,所以如果当我们转到下一个版本时,我可能会重复这个改变。
你怎么记录?你在用什么课程? – tinybyte
感谢Harikrishnan的回应。它是日志记录失败的CDbCommand.php,它包含失败的SQL(搜索yii/framework/db/CDbCommand.php中的“SQL语句...”)。 – user3318360