首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 將日誌寫入 Syslog 完整實作指南

     編輯:PHP 相關知識

生產環境建議將應用日誌寫入系統 Syslog,便於集中管理、輪轉與分析。本文詳述 Linux Syslog 配置與 PHP 端呼叫方法。

Linux Syslog 設備與級別

設備用途
AUTH / AUTHPRIV授權/安全訊息
CRON定時任務
DAEMON守護進程
KERN核心訊息
LOCAL0 ~ LOCAL7本地應用保留(推薦用於自訂應用)
MAIL郵件系統
USER一般用戶級訊息
級別嚴重度
emerg系統不可用
alert需立即處理
crit嚴重錯誤
err錯誤
warning警告
notice重要提示
info資訊
debug除錯

配置專屬日誌規則

  1. 編輯 /etc/syslog.conf (或 /etc/rsyslog.conf):
    local4.info -/var/log/myapp.log
  2. 重載 Syslog:/etc/init.d/sysklogd reload 或 systemctl reload rsyslog
  3. 測試:logger -p local4.info "my test log" → tail /var/log/myapp.log 應見訊息。

PHP 呼叫 Syslog

<?php
// 開啟日誌連線
openlog("MyApp", LOG_PID | LOG_PERROR, LOG_LOCAL4);

// 寫入日誌
$level = LOG_INFO; // 或 LOG_WARNING, LOG_ERR 等
$errinfo = "用戶登入失敗: IP=192.168.1.1";
syslog($level, "LOG MESSAGE: " . $errinfo);

// 關閉
closelog();
?>

參數說明

  • openlog(ident, option, facility)
    • ident:日誌標識,自動加在每行開頭。
    • option:LOG_PID(記錄 PID)、LOG_PERROR(同時輸出到 stderr)、LOG_CONS(失敗時輸出到控制台)。
    • facility:對應 Syslog 設備,如 LOG_LOCAL4。
  • syslog(priority, message):priority 為級別常量(LOG_INFO 等)。

最佳實踐

  1. 使用 LOG_LOCAL0~LOG_LOCAL7 避免與系統服務衝突。
  2. 生產環境建議封裝為日誌類,支援多級別、上下文資訊、結構化輸出 (JSON)。
  3. 配合 logrotate 進行日誌輪轉、壓縮、保留策略。
  4. 關鍵業務操作(登入、支付、權限變更)務必記錄審計日誌。

將 PHP 日誌接入 Syslog,是構建可觀測、可維運系統的基礎步驟。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved