将错误记录到文件中,但不显示在Codeigniter中


Log errors to file but not display in Codeigniter

在生产中运行Codeigniter应用程序时,我希望能够记录错误,特别是PHP错误。问题是,使用CI来记录PHP错误需要将CI日志级别设置为error或更高,从而将这些错误显示在屏幕上。在by生产环境中,我想将这些错误记录到日志文件中,但不在屏幕上显示。

有人能做到这一点吗?

在代码点火器3.1.10版本中如果你想记录错误,但不想在生产环境的屏幕上显示,

然后您必须更改主根文件index.php中环境变量的值,然后搜索变量ENVIRONMENT并更改它。

默认情况下如下所示:

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

将其更改为

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'production');

现在错误将不会显示在屏幕上,

但是您想要记录这些错误,所以您必须更改配置文件的log变量,该变量位于application/config/config.php

默认情况下将为:

$config['log_threshold'] = 0;

将其更改为

$config['log_threshold'] = 1;

现在,在logs文件夹中,日志文件将按日期创建,您可以在其中看到记录的php错误。

log_threshold变量解释的选项:

0 = Disables logging, Error logging TURNED OFF
1 = Error Messages (including PHP errors)
2 = Debug Messages
3 = Informational Messages
4 = All Messages

对于实时网站,通常只允许记录错误(1),否则你的日志文件会很快填满。

我不确定,但我认为您需要将显示错误设置为0,并将error_reporting设置为e_all

ini_set("display_errors",1);
error_reporting(E_ALL);

在config/config.php中设置以下内容:

$config['log_threshold'] = 4;
$config['log_path'] = 'appropriate path of the file';

您可以将以下行放置在应用程序中的任何位置(如控制器、模型或辅助对象中)。

log_message('info', 'some message');

在执行应用程序后,将使用具有当前日期的名称创建一个日志文件。

如果您检查该文件,您将收到日志消息。

如果您的消息正在打印,则意味着您的文件正在正确执行,直到它执行log_message()函数为止。您可以多次检查放置线并进行检查。

希望我的回答有用。如果没有,请发表评论。我会设法解决你的问题。

参考链接:https://ellislab.com/codeigniter/user-guide/general/errors.html