gpt4 book ai didi

php - Codeigniter 记录太多

转载 作者:可可西里 更新时间:2023-10-31 22:40:15 25 4
gpt4 key购买 nike

在我的 CI 配置文件中,我设置了这个日志记录阈值:

$config['log_threshold'] = 1;

在index.php中,我设置了如下报错:

error_reporting(E_ERROR);

我的期望是这将记录我记录的任何 CI 错误(使用 log_message('error','my error message')),以及任何 PHP 错误。但是,我希望它不会记录 PHP 通知,只会记录错误。但是,当我查看日志文件时,它似乎也记录了 PHP 通知:

ERROR - 2009-12-18 13:21:50—> Severity: Notice —> Undefined variable: pageindex /var/www/apps/OS4W/system/application/views/user/view.php 12
ERROR - 2009-12-18 13:21:50—> Severity: Notice —> Undefined variable: friendsmode /var/www/apps/OS4W/system/application/views/user/activitytable.php 207

虽然日志行以“ERROR”开头,但实际上这似乎是一个 PHP 通知,有点像警告,我不想记录。如何确保只记录 CI 和 PHP 错误,而不记录 PHP 通知?我以为 error_reporting(E_ERROR) 会那样做?

最佳答案

首先感谢大家的共同思考。在考虑了您的建议后,我决定修补 CI 的核心。不幸的是,可以扩展核心类,但不能扩展核心本身。因此,如果您应用相同的补丁,请务必将其记录下来。

来了。在 system\application\config\config.php 中,我在 log_treshold 设置的正下方添加了以下自定义配置设置:

/*
|--------------------------------------------------------------------------
| Error Logging Exclusions (custom config addition by Ferdy Christant)
|--------------------------------------------------------------------------
|
| By default, CI will log all PHP errors, whether it is a notice, warning
| or error. Or, by setting the above treshold to 0, it will log nothing
| In most cases, however, you will want to log PHP errors but not the notices
| In the array below, simply place the PHP error constant that you do NOT
| want to see logged.
|
| For a live site you'll usually use the config as follow:
|
| $config['exclude_logging'] = array(E_STRICT,E_NOTICE);
|
*/

$config['exclude_logging'] = array(E_STRICT,E_NOTICE);

如文档所述,在此配置数组中,您放置了您不想记录的 PHP 错误类型。

接下来,我已经修补了核心文件 (system/codeigniter/Common.php) 并编辑了函数 _exception_handler

有两个变化。首先,我将配置加载行移到了方法的顶部,因为我之前需要它。找到下面的行,您将看到 $config =& get_config();在它下面。删除那个。

我删除了//Should we log the error?不?我们完成了...

其次,对严重性的检查被修改为检查我们声明的数组。转到方法的顶部并将检查 $severity == E_STRICT 的 if 语句替换为以下内容:

$config =& get_config();
if (in_array($severity,$config['exclude_logging']))
{
return;
}

这些补丁允许对 PHP 错误日志记录进行细粒度控制。正常的 CI 日志记录当然仍然有效。如前所述,唯一的缺点是这会修补核心。

我希望这对任何人都有帮助。感谢您的思考!

关于php - Codeigniter 记录太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1928965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com