如何在线浏览PHP或Apache错误日志?

12

有没有一种方法可以在网页浏览器中查看PHP错误日志或Apache错误日志?

我发现通过ssh登录到多个服务器并运行"tail"命令来跟踪错误日志非常不方便。是否有一些工具(最好是开源的)可以在线显示我的错误日志(流式或非流式)?

谢谢。

7个回答

10

一个简单的 PHP 代码来读取日志并打印:

<?php

  exec('tail /var/log/apache2/error.log', $error_logs);

  foreach($error_logs as $error_log) {

       echo "<br />".$error_log;
  }

 ?>

根据您的需求,您可以将error_log PHP变量嵌入到HTML中。最好的部分是tail命令将加载最新的错误,这不会给您的服务器带来太大的负荷。

您可以更改tail以按您想要的方式输出

例如:tail myfile.txt -n 100 // 它将返回最后100行


9

既然大家都在推荐clarity,我也想提一下tailon。我写了tailon作为clarity的更现代和更安全的替代品。它仍处于早期开发阶段,但您需要的功能都已经有了。如果您只想跟踪单个日志文件,则还可以使用wtee


9

6
你可以编写一个脚本来读取apache2的错误日志..
$apache_errorlog = file_get_contents('/var/log/apache2/error.log');

如果它不能正常工作...尝试使用php函数execshell_exec和命令'cat /var/log/apache2/error.log'

编辑:如果您有多个服务器(我猜其中包含Web服务器),则可以在该机器上创建一个文件,当您向该脚本(哈希连接)发出请求时,您将从该服务器获取日志。


2
这不会创建一个警告,例如“PHP警告:file_get_contents(/var/log/apache2/error.log):无法打开流:权限被拒绝”吗?当然,前提是设置了基本的安全系统。 - padawanTony

2
我推荐使用LogHappens:https://loghappens.com,它可以让您在网页上查看错误日志,效果如下:

LogHappens支持各种网络服务器日志格式,它自带Apache和CakePHP的解析器,您也可以编写自己的解析器。
您可以在这里找到它:https://github.com/qijianjun/logHappens 它是开源且免费的,我fork了它并做了一些工作,以使其在开发环境或公共环境中更好地工作。具体来说:
  • 支持安全令牌,没有在config.php中设置令牌的用户将无法访问该站点
  • 支持IP白名单,以确保安全和隐私
  • 支持配置AJAX请求之间的时间间隔
  • 支持从本地加载静态文件(用于本地开发环境)

1
我发现了这个解决方案https://code.google.com/p/php-tail/,它完美地工作。我只需要更改文件大小,因为我先前遇到了错误。
56       if($maxLength > $this->maxSizeToLoad) {
57                $maxLength = $this->maxSizeToLoad;
58                // return json_encode(array("size" => $fsize, "data" =>   array("ERROR: PHPTail attempted to load more (".round(($maxLength / 1048576), 2)."MB) then the maximum size (".round(($this->maxSizeToLoad / 1048576), 2)    ."MB) of bytes into memory. You should lower the defaultUpdateTime to prevent this from happening. ")));
59       }

我已经添加了默认大小,但这并不需要

125       lastSize = <?php echo filesize($this->log) || 1000; ?>;

1
我知道这个问题有点旧,但是它给了我创造这个小型(开源)Web应用程序的想法,可以在https://github.com/ToX82/logHappens上使用。它可以在线使用,但我建议使用.htpasswd作为基本的登录系统。希望能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接