生產環境建議將應用日誌寫入系統 Syslog,便於集中管理、輪轉與分析。本文詳述 Linux Syslog 配置與 PHP 端呼叫方法。
| 設備 | 用途 |
|---|---|
| AUTH / AUTHPRIV | 授權/安全訊息 |
| CRON | 定時任務 |
| DAEMON | 守護進程 |
| KERN | 核心訊息 |
| LOCAL0 ~ LOCAL7 | 本地應用保留(推薦用於自訂應用) |
| 郵件系統 | |
| USER | 一般用戶級訊息 |
| 級別 | 嚴重度 |
|---|---|
| emerg | 系統不可用 |
| alert | 需立即處理 |
| crit | 嚴重錯誤 |
| err | 錯誤 |
| warning | 警告 |
| notice | 重要提示 |
| info | 資訊 |
| debug | 除錯 |
/etc/syslog.conf (或 /etc/rsyslog.conf):local4.info -/var/log/myapp.log/etc/init.d/sysklogd reload 或 systemctl reload rsysloglogger -p local4.info "my test log" → tail /var/log/myapp.log 應見訊息。<?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 等)。LOG_LOCAL0~LOG_LOCAL7 避免與系統服務衝突。logrotate 進行日誌輪轉、壓縮、保留策略。將 PHP 日誌接入 Syslog,是構建可觀測、可維運系統的基礎步驟。