在生产中运行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