web-dev-qa-db-ja.com

ブラウザでPHPまたはApacheエラーログをオンラインで表示する方法は?

WebブラウザでPHPエラーログまたはApacheエラーログを表示する方法はありますか?

複数のサーバーにSSHで接続し、「tail」コマンドを実行してエラーログを追跡するのは不便だと思います。オンラインでエラーログ(ストリーミングまたは非ストリーミング)を表示するツール(できればオープンソース)はありますか?

ありがとう

10
eric
8
Petr

みんなが提案しているので clarity なので、 tailon についても触れておきたいと思います。 clarity のより現代的で安全な代替手段として tailon を書きました。まだ開発の初期段階ですが、必要な機能はそこにあります。単一のログファイルの追跡のみに関心がある場合は、 wtee を使用することもできます。

7
gvalkov

Apache2からエラーログを読み取るスクリプトを作成することをお勧めします。

$Apache_errorlog = file_get_contents('/var/log/Apache2/error.log');

動作しない場合..php関数execまたはShell_execとコマンド 'cat/var/log/Apache2/error.log'を使用して取得しようとしています

編集:マルチサーバー(ウェブサーバーが搭載されている)がある場合は、マシン上にファイルを作成できます。そのスクリプト(ハッシュ接続)にリクエストを送信すると、そのサーバーからログが取得されます。

5
Yoram de Langen

ログを読み取って印刷するための単純なphpコード:

<?php

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

  foreach($error_logs as $error_log) {

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

 ?>

要件に応じて、error_logphp変数をhtmlに埋め込むことができます。最良の部分は、tailコマンドが、サーバーに過度の負荷をかけない最新のエラーをロードすることです。

tailを変更して、必要に応じて出力を提供できます

tail myfile.txt -n 100 //最後の100行を表示します

5
B.S.B.

LogHappensをお勧めします: https://loghappens.com 、Webでエラーログを表示できます。次のようになります。

LogHappensは、さまざまな種類のWebサーバーログ形式をサポートし、ApacheおよびCakePHPの解析が付属しており、独自に作成できます。

ここで見つけることができます: https://github.com/qijianjun/logHappens

それはオープンソースで無料です。私はそれをフォークし、devenvまたはpublicenvでより良く機能するようにいくつかの作業を行います。あれは:

  • セキュリティのためのサポートトークン。config.phpにトークンがないとサイトにアクセスできません。
  • セキュリティとプライバシーのためのIPホワイトリストをサポートする
  • サポートはajaxリクエスト間の間隔を設定します
  • ローカルからの静的ファイルのロードをサポート(ローカル開発環境用)
1
nowheretoseek

この質問は少し古いことは知っていますが、(適切な選択肢がないことに加えて)この小さな(オープンソース)Webアプリを作成するというアイデアが得られました。 https://github.com/ToX82/logHappens 。オンラインで使用できますが、基本的なログインシステムとして.htpasswdを使用します。お役に立てば幸いです。

1
ToX 82

私はこの解決策を見つけました 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
Richard