【问题标题】:Can I add additional information to a php error log - *only* when it errors?我可以将其他信息添加到 php 错误日志中吗? *仅在出错时*?
【发布时间】:2020-01-05 11:36:26
【问题描述】:

我的 php 设置当前在标准 php_errorlog 文件中记录错误。这些错误告诉我错误的类型和发生的行(标准内容)。

我想在此日志中添加更多信息,但仅在发生错误时

例如,我想在我的脚本顶部创建一个变量$error_details,我将在其中放入诸如当时登录用户的ID 和php://input 详细信息之类的内容。

我知道我可以写error_log($error_details),但这会记录每次我的脚本运行的时间。我希望它只在出现错误时记录

【问题讨论】:

    标签: php logging error-handling


    【解决方案1】:

    你可以使用error_get_last函数。

    if (error_get_last()) {
        //Error occurred
    }
    

    【讨论】:

      【解决方案2】:

      有几种方法可以做到这一点控制错误日志与库或大量工作的自我编码。

      Monolog - Logging for PHP

      Loggy 上基本类型的库和不错的示例

      PHP 错误日志类型

      PHP 提供了多种错误日志类型,用于识别应用程序运行时遇到的错误的严重程度。

      错误级别表明引擎是否无法解析和编译您的 PHP 语句,或者无法访问或使用您的应用程序所需的资源,一直到让您知道您是否有可能的拼写错误变量名。

      虽然错误级别是整数值,但每个错误级别都有预定义的常量。

      使用常量将使您的代码更易于阅读和理解,并在引入新的错误级别时保持向前兼容。

      遇到的常见错误级别包括:

      检查Predefined Constants

      这里有很好的教程:Ultimate Guide to Logging

      另一种方式是基本例外

      PHP 有一个基础 Exception 类,该类默认情况下在该语言中可用。 如果需要,基 Exception 类是可扩展的。

      示例:(假设指令log_errors = 1)。

      try{
      
      if(true){
      
      throw new Exception("Something failed", 900);
      
      }
      
      } catch (Exception $e) {
      
      $datetime = new DateTime();
      
      $datetime->setTimezone(new DateTimeZone('UTC'));
      
      $logEntry = $datetime->format('Y/m/d H:i:s') . ‘ ‘ . $e;
      
      
      
      // log to default error_log destination
      
      error_log($logEntry);
      
      //Email or notice someone
      //OR use fopen(); function and write in to error_log file
      
      }
      

      上面的例子会产生以下错误日志条目:

      2020/01/05 15:02:24/Something failed/900//var/www/html/index.php/4
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-28
        • 2011-05-31
        • 2016-05-11
        • 1970-01-01
        • 2018-10-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多