首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 未知錯誤記錄機制:PHP 類實現自動記錄錯誤日誌

     編輯:MySQL 資料庫相關知識

需求背景

生產環境難免遇到未預期的 MySQL 錯誤,需自動記錄錯誤時間、客戶端 IP、錯誤訊息、發生檔案、用戶帳號等資訊,利於事後分析。

PHP 錯誤記錄類實現

class MySQL_ErrorLogger {
    // 建立錯誤日誌
    function logError() {
        $fp = @fopen("error.dat", "a+");
        $time = date("Y-m-d H:i:s");
        $msg = "{VisitedTime:$time}\t" .
               "{VisiterIP:{$_SERVER['REMOTE_ADDR']}}\t" .
               "{Errormsg:" . mysql_error() . "}\t" .
               "{File:->{$_SERVER['PHP_SELF']}}\t" .
               "{User:{$_SESSION['user']}}\r\n";
        @fputs($fp, $msg);
        @fclose($fp);
    }
}

調用方式

在每個使用 MySQL 連線的頁面尾部或錯誤處理處加入:

if (mysql_error()) {
    $logger = new MySQL_ErrorLogger();
    $logger->logError();
}

日誌範例內容

{VisitedTime:2002-05-09 14:43:56}
{VisiterIP:127.0.0.1}
{Errormsg:Duplicate entry '0' for key 1}
{File:->/path/path/errorfilename.php}
{User:sports98}

進階建議

  • include 檔案中不要加 __LINE__ (行號無意義)
  • require 檔案中建議加入 __LINE__ 快速定位錯誤行
  • 日誌檔權限設為 0600,放置非公開目錄
  • 生產環境建議整合成熟日誌框架 (Monolog 等) 而非自寫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved