gpt4 book ai didi

php - 是否可以更改 PHP 错误日志输出?

转载 作者:可可西里 更新时间:2023-10-31 23:04:00 25 4
gpt4 key购买 nike

我在我的 php.ini 文件中配置了 error_log 指令,如下所示:

error_log = /path/to/logs/error_log

然后我像这样配置了 error_reporting 指令:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

当我检查 error_log 文件时,我看到正常的 PHP 警告/错误文本行:

[03-Jun-2015 08:39:00 America/Bogota] PHP Notice:  Undefined index: cerrar in /fake/path/to/file2.php on line 68
[03-Jun-2015 08:40:49 America/Bogota] PHP Notice: Undefined index: in /fake/path/to/file2.php on line 344

有没有办法改变输出格式?我的意思是,如果我可以打印,例如,导致警告的 IP 地址和子域。

我在 Stack Overflow 和 Google 搜索中寻找它,但没有找到明确的信息或示例。

最佳答案

所以同意并最终确定上面给出的所有评论,最好的方法是set_error_handler .

我为你写了一个类。我也喜欢set_exception_handler获得统一的体验并将所有错误保存在 Error::$throwables 中以在关闭时显示它们而不是 View (由此处未提供的 View 类处理)。

class Error
{
public static $error_types = array(
E_ERROR => 'E_ERROR',
E_WARNING => 'E_WARNING',
E_PARSE => 'E_PARSE',
E_NOTICE => 'E_NOTICE',
E_CORE_ERROR => 'E_CORE_ERROR',
E_CORE_WARNING => 'E_CORE_WARNING',
E_COMPILE_ERROR => 'E_COMPILE_ERROR',
E_COMPILE_WARNING => 'E_COMPILE_WARNING',
E_USER_ERROR => 'E_USER_ERROR',
E_USER_WARNING => 'E_USER_WARNING',
E_USER_NOTICE => 'E_USER_NOTICE',
E_STRICT => 'E_STRICT',
E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
E_DEPRECATED => 'E_DEPRECATED',
E_USER_DEPRECATED => 'E_USER_DEPRECATED'
);

public static $shutdown = FALSE;

public static $throwables = array();

public static function set_throwable_handlers()
{
ini_set('error_reporting', E_ALL & ~E_DEPRECATED & ~E_STRICT);
ini_set('display_errors', FALSE);
ini_set('log_errors', TRUE);
ini_set('error_log', '/path/to/logs/error_log');

set_error_handler(array('Error', 'error_handler'));
set_exception_handler(array('Error', 'exception_handler'));

register_shutdown_function(array('Error', 'shutdown_handler'));
}

public static function set_throwable($error_number, $error_text, $error_file, $error_line, $error_log = TRUE)
{
if ($error_log === TRUE)
{
//provide any data you want to log to error log
error_log('PHP ' . self::$error_types[$error_number] . ' : ' . $error_text . ' in ' . $error_file . ' on line ' . $error_line);
}

//provide any data you want to class variable
self::$throwables[$error_number][] = array('type' => self::$error_types[$error_number], 'text' => $error_text, 'file' => $error_file, 'line' => $error_line);
}

public static function exception_handler(Exception $exception)
{
self::set_throwable($exception->getCode(), $exception->getMessage(), $exception->getFile(), $exception->getLine());
}

public static function error_handler($error_number = '', $error_text = '', $error_file = '', $error_line = '')
{
self::set_throwable($error_number, $error_text, $error_file, $error_line);
}

public static function shutdown_handler()
{
$error = error_get_last();

if ($error !== NULL)
{
self::set_throwable($error['type'], $error['message'], $error['file'], $error['line'], FALSE);
}

//enables error page on shutdown & displays the throwables
//self::$shutdown = TRUE;
//
//View::display();
}

public static function throw_error($error_text, $error_number = E_USER_NOTICE)
{
trigger_error($error_text, $error_number);

exit;
}
}

关于php - 是否可以更改 PHP 错误日志输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30630484/

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