【问题标题】:Can you log php errors to multiple files?您可以将 php 错误记录到多个文件中吗?
【发布时间】:2012-04-04 09:57:48
【问题描述】:

是否可以将相同的错误发送到 /var/log/php_errors 中的全局 php 错误日志以及将相同的错误发送到 /var/www/mysite/php_errors 中的本地错误日志?

在我们的登台服务器上,我跟踪日志文件,许多 wordpress 内容以及一些大而丑陋的 print_r 将来自其他开发人员。我想要一个全局错误文件,以查看是否有任何东西不时破坏服务器范围,并分离出我的本地错误,以便如果我目前只对一个站点感兴趣,我可以更好地关注它们.

【问题讨论】:

  • 这太糟糕了,error_log=log1;log2 也不起作用。

标签: php apache error-logging


【解决方案1】:

使用set_error_handler 并创建一个自定义错误函数,其中包含尽可能多的日志记录。

【讨论】:

【解决方案2】:

如果您使用诸如log4php 之类的库,那么您可以配置多种日志记录选项,包括根据日志类型写入多个文件、发送电子邮件等。

【讨论】:

    【解决方案3】:

    我不知道。但是,您可以使用 error_prepend_string ini 设置并在所有错误日志前添加一些内容。然后,当您跟踪您的日志文件时,您可以对您设置的任何内容进行 grep,它只会向您显示来自该站点的消息(只要您选择相当独特的内容。)

    http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-prepend-string

    【讨论】:

    • 我们可以在 .htaccess 文件中设置它吗?这可能是最简单的解决方案。我需要复习一下我的 grep-pipe-fu。
    • error_prepend_string 适用于错误显示输出,但不适用于日志记录。
    【解决方案4】:

    您可以在共享文件中使用此代码并调用相应的日志记录函数:

    function log_to_file_1($msg){
       ini_set("log_errors", 1); 
       ini_set("error_log", "/tmp/file_1.log");
       ini_set('log_errors_max_len', 1024); // Logging file size
       error_log($msg);
    }
    
    function log_to_file_2($msg){
       ini_set("log_errors", 1); 
       ini_set("error_log", "/tmp/file_2.log");
       ini_set('log_errors_max_len', 1024); // Logging file size
       error_log($msg);
    }
    

    您还可以使用单个日志记录函数,并将文件名作为参数:

    function mysql_error_log($filename, $msg){
      ini_set("log_errors", 1); 
      ini_set("error_log", "/tmp/$filename");
      ini_set('log_errors_max_len', 1024); // Logging file size
      error_log($msg);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-30
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 2018-07-19
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多