一种基于每个脚本禁用Monolog的方法?

时间:2012-05-25 18:15:01

标签: php symfony monolog

我们有一些相当大的数据导入脚本(Symfony“命令”)由于Monolog内存不足而出错(第58行的vendor \ monolog \ src \ Monolog \ Formatter \ LineFormatter.php)。我们一般使用Monolog,所以不想完全禁用它。

2 个答案:

答案 0 :(得分:3)

我意识到这是一个老问题,但当我遇到长时间运行的Monolog使用脚本产生内存错误的问题时,事实证明问题是Monolog的' fingers_crossed&# 39;处理程序缓冲大量日志消息。

我通过设置' buffer_size'解决了这个问题。有问题的Monolog处理程序的变量。像这样:

main:
    type:         fingers_crossed
    action_level: info
    buffer_size:  200
    handler:      nested

编辑:正如Sergio在评论中指出的那样,buffer_size设置:'除了从缓冲区删除最旧的项目之外,最多应缓冲多少条目。

答案 1 :(得分:1)

因为在prod环境中你有Doctrine的问题我不认为专注于logger会改善你的情况。但是,您可以尝试通过多次调用$logger->popHandler()从堆栈中弹出日志处理程序。可能是日志消息堆叠在一起,因此内存不足。

尽管如此,你更有可能遇到教条问题。

我尝试使用XHProf或XDebug来查看实际问题的位置。仅仅因为你的脚本在某一点失败并不意味着它是问题的原因(实际的内存泄漏可能在其他地方)。