【问题标题】:yii2 error not in logyii2错误不在日志中
【发布时间】:2016-05-17 20:47:50
【问题描述】:

我得到 Yii2

Error (#8)
An internal server error occurred.

但在日志中找不到。

既不在此 apache vhost 的 .access .error 文件中,也不在 apache 日志中

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

【问题讨论】:

    标签: php apache logging yii2


    【解决方案1】:

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

    例子:

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

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

    来自documentation

    日志消息由 logger 对象保存在一个数组中。为了限制该数组的内存消耗,每次数组累积一定数量的日志消息时,记录器都会将记录的消息刷新到日志目标。你可以通过配置log组件的flushInterval属性来自定义这个数字:

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

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

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

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

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

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

    【讨论】:

    • 设置flushInterval和exportInterval后,日志中仍然没有显示错误
    • 您在哪里查看日志?你在使用任何应用程序模板,基本的还是高级的?
    • 这很奇怪,因为即使消息没有在运行时/日志中刷新,您也应该在 apache 的 php 错误日志中看到一些内容
    • 我解决了问题,目录 runtime/logs 不可写,而 runtime 是。
    • 我的日志文件是空的。我在那里没有看到任何错误
    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 2010-10-07
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多