yii2错误不在日志

时间:2016-02-08 08:45:45

标签: php apache logging yii2

我得到了Yii2

Error (#8)
An internal server error occurred.

但在日志中找不到。

此apache vhost的.access .error个文件和apache日志中都没有

这发生在远程服务器上,我无法在本地重现它。除了更改远程服务器上的error_reporting之外,还有其他方法可以查看错误吗?

1 个答案:

答案 0 :(得分:0)

确保在配置中指定了日志目标,并在引导期间加载了日志组件。

示例:

return [
    'bootstrap' => ['log'],

    'components' => [
        'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
    ],
];

另外,请检查您的exportIntervalflushInterval设置。

来自documentation

日志消息由记录器对象维护在数组中。要限制此阵列的内存消耗,记录器将在每次阵列累积一定数量的日志消息时将记录的消息刷新到日志目标。您可以通过配置flushInterval组件的log属性来自定义此数字:

return [
    'bootstrap' => ['log'],
    'components' => [
        'log' => [
            'flushInterval' => 100,   // default is 1000
            'targets' => [...],
        ],
    ],
];

当记录器对象将日志消息刷新到日志目标时,它们不会立即导出。相反,仅当日志目标累积特定数量的已过滤消息时,才会发生消息导出。您可以通过配置各个日志目标的exportInterval属性来自定义此数字,如下所示,

[
    'class' => 'yii\log\FileTarget',
    'exportInterval' => 100,  // default is 1000
]

由于刷新和导出级别设置,默认情况下,当您调用Yii::trace()或任何其他日志记录方法时,您将 NOT 立即在日志目标中查看日志消息。对于某些长时间运行的控制台应用程序,这可能是一个问题要使每条日志消息立即显示在日志目标中,您应将flushIntervalexportInterval都设置为1,如下所示:

return [
    'bootstrap' => ['log'],
    'components' => [
        'log' => [
            'flushInterval' => 1,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'exportInterval' => 1,
                ],
            ],
        ],
    ],
];

注意:频繁的邮件刷新和导出会降低应用程序的性能。