2011-10-30 19 views
8

Có cách nào để xem nhật ký lỗi PHP hoặc nhật ký lỗi Apache trong trình duyệt web không?Làm thế nào để xem nhật ký lỗi PHP hoặc Apache trực tuyến trong trình duyệt?

Tôi thấy không thuận tiện khi ssh vào nhiều máy chủ và chạy lệnh "đuôi" để theo dõi nhật ký lỗi. Có một số công cụ (nguồn tốt nhất là mở) mà chỉ cho tôi các bản ghi lỗi trực tuyến (streaming hay không trực tuyến?

Cảm ơn

Trả lời

5

Bạn tốt làm cho một kịch bản mà đọc các bản ghi lỗi từ apache2 ..

$apache_errorlog = file_get_contents('/var/log/apache2/error.log'); 

nếu nó không làm việc .. cố gắng để có được nó với các chức năng php exec hoặc shell_exec và lệnh 'mèo /var/log/apache2/error.log'

EDIT: Nếu bạn có máy chủ đa (i quess với máy chủ web trên đó) bạn có thể c reate một tập tin trên máy tính này, khi bạn thực hiện một yêu cầu mà kịch bản (kết nối băm) bạn sẽ có được các bản ghi từ máy chủ

+1

Không phải điều này sẽ tạo cảnh báo như 'Cảnh báo PHP: file_get_contents (/var/log/apache2/error.log): không thể mở luồng: Quyền bị từ chối'? Tất nhiên cho rằng một hệ thống bảo mật cơ bản được thiết lập. – padawanTony

5

Vì mọi người đang đề xuất clarity, tôi cũng muốn đề cập đến tailon. Tôi đã viết tailon làm phương án thay thế hiện đại và an toàn hơn cho clarity. Nó vẫn còn trong giai đoạn phát triển ban đầu, nhưng chức năng bạn cần là ở đó. Bạn cũng có thể sử dụng wtee, nếu bạn chỉ quan tâm đến việc theo dõi một tệp nhật ký duy nhất.

1

Tôi đã tìm thấy giải pháp này https://code.google.com/p/php-tail/

Nó hoạt động hoàn hảo. Tôi chỉ cần thay đổi kích thước, vì trước tiên tôi đã gặp lỗi.

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  } 

Và tôi đã thêm kích thước mặc định, nhưng nó không cần thiết

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

Tôi biết câu hỏi này là một chút cũ, nhưng (cùng với việc thiếu sự lựa chọn tốt) nó đã cho tôi ý tưởng để tạo ứng dụng web nhỏ (nguồn mở) này. https://github.com/ToX82/logHappens. Nó có thể được sử dụng trực tuyến, nhưng tôi sẽ sử dụng một .htpasswd như một hệ thống đăng nhập cơ bản. Tôi hy vọng nó sẽ giúp.

2

Một mã php đơn giản để đọc đăng nhập và in:

<?php 

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

    foreach($error_logs as $error_log) { 

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

?> 

Bạn có thể nhúng biến php error_log trong html theo yêu cầu của bạn. Phần tốt nhất là tail lệnh sẽ tải các lỗi mới nhất mà sẽ không làm quá tải trên máy chủ của bạn.

Bạn có thể thay đổi tail để cung cấp cho đầu ra như bạn muốn

Ex. tail myfile.txt -n 100 // nó sẽ cung cấp 100 dòng cuối cùng