首页 文章

如何将错误和警告记录到文件中?

提问于
浏览
204

如何打开所有错误和警告并将它们记录到文件中,但要在脚本中设置所有这些(不要更改php.ini中的任何内容) . 我想定义一个文件名,以便记录所有错误和警告 .

7 回答

  • 23

    使用以下代码:

    ini_set("log_errors", 1);
    ini_set("error_log", "/tmp/php-error.log");
    error_log( "Hello, errors!" );
    

    然后看文件:

    tail -f /tmp/php-error.log
    

    或者如2008年this blog entry中所述更新 php.ini .

  • 6

    看到

    error_log("You messed up!", 3, "/var/tmp/my-errors.log");
    

    每当出现错误或警告或需要记录的任何内容时,您都可以customize error handling with your own error handlers为您调用此函数 . 有关其他信息,请参阅Chapter Error Handling in the PHP Manual

  • 5

    只需将这些代码放在PHP /索引文件的顶部:

    error_reporting(E_ALL); // Error engine - always ON!
    
    ini_set('display_errors', TRUE); // Error display - OFF in production env or real server
    
    ini_set('log_errors', TRUE); // Error logging
    
    ini_set('error_log', 'your/path/to/errors.log'); // Logging file
    
    ini_set('log_errors_max_len', 1024); // Logging file size
    
  • 17

    .htaccess 中添加此代码(作为 php.ini / ini_set 函数的替代):

    <IfModule mod_php5.c>
    php_flag log_errors on 
    php_value error_log ./path_to_MY_PHP_ERRORS.log
    </IfModule>
    

    附:这适用于Apache类型的服务器 .

  • 81

    看看php.ini中的log_errors配置选项 . 它似乎只是你想要的 . 我认为您也可以使用error_log选项来设置自己的日志文件 .

    log_errors 指令设置为 On 时,PHP报告的任何错误都将记录到服务器日志或 error_log 指定的文件中 . 如果需要,您也可以使用ini_set设置这些选项 .

    (请注意,如果启用此选项,则应在php.ini中禁用 display_errors

  • 0

    这是我个人的短期功能

    # logging
    /*
    [2017-03-20 3:35:43] [INFO] [file.php] Here we are
    [2017-03-20 3:35:43] [ERROR] [file.php] Not good
    [2017-03-20 3:35:43] [DEBUG] [file.php] Regex empty
    
    mylog ('hallo') -> INFO
    mylog ('fail', 'e') -> ERROR
    mylog ('next', 'd') -> DEBUG
    mylog ('next', 'd', 'debug.log') -> DEBUG file debug.log
    */
    function mylog($text, $level='i', $file='logs') {
        switch (strtolower($level)) {
            case 'e':
            case 'error':
                $level='ERROR';
                break;
            case 'i':
            case 'info':
                $level='INFO';
                break;
            case 'd':
            case 'debug':
                $level='DEBUG';
                break;
            default:
                $level='INFO';
        }
        error_log(date("[Y-m-d H:i:s]")."\t[".$level."]\t[".basename(__FILE__)."]\t".$text."\n", 3, $file);
    }
    
  • 321

    此外,您需要“AllowOverride选项”指令才能使用此功能 . (Apache 2.2.15)

相关问题