Linux環境下Laravel日志管理技巧
Laravel的日志默認存儲在項目根目錄的storage/logs
文件夾中(如laravel.log
)。在Linux環境下,可通過SSH登錄服務器,使用cd
命令進入項目目錄,再通過ls
查看日志文件列表。若需快速定位特定日志,可使用find
命令(例如find /path/to/project/storage/logs -name "*.log"
)。
Laravel支持8種日志級別(從高到低依次為emergency
、alert
、critical
、error
、warning
、notice
、info
、debug
),可通過.env
文件中的LOG_LEVEL
參數設置記錄閾值。例如:
LOG_LEVEL=error
;LOG_LEVEL=debug
。
也可直接修改config/logging.php
中的通道配置(如'level' => 'info'
)覆蓋全局設置。為避免日志文件無限膨脹占用磁盤空間,推薦使用Linux自帶的logrotate
工具。創建/etc/logrotate.d/laravel
配置文件,添加以下內容(根據項目路徑調整):
/path/to/your/laravel/storage/logs/*.log {
daily # 每天輪轉一次
missingok # 若日志文件不存在也不報錯
rotate 14 # 保留14天的歷史日志
compress # 壓縮舊日志(節省空間)
notifempty # 若日志為空則不輪轉
create 640 www-data adm # 創建新日志文件并設置權限(用戶:組)
}
該配置可實現日志的自動分割、壓縮和清理,無需手動干預。
tail
命令跟蹤日志文件的最新更新(如tail -f storage/logs/laravel.log
),可實時監控應用運行狀態;tail -n 20 storage/logs/laravel.log
查看最后20條記錄;grep
命令過濾特定內容(如grep "error" storage/logs/laravel.log
查找所有錯誤日志)。php artisan log:clear
命令,可一鍵刪除storage/logs
目錄下所有舊日志文件(僅保留最新的single
或daily
通道日志);0 1 * * * find /path/to/your/laravel/storage/logs -type f -name "*.log" -mtime +14 -exec rm -f {} \;
該命令會刪除14天前的所有.log
文件。通過Laravel的Log
門面,可在代碼中便捷記錄不同級別的日志。例如:
use Illuminate\Support\Facades\Log;
// 記錄信息日志
Log::info('用戶登錄成功', ['user_id' => 1]);
// 記錄錯誤日志
Log::error('數據庫連接失敗', ['exception' => $e]);
日志內容會自動寫入對應通道的日志文件,便于后續追蹤問題。
對于更復雜的日志管理需求(如實時監控、集中存儲、告警),可集成第三方工具:
config/logging.php
擴展(如添加slack
通道發送日志到Slack);確保storage/logs
目錄及日志文件的權限正確,避免因權限問題導致日志無法寫入。通常設置:
chown -R www-data:adm storage/logs # 將目錄所有者設為www-data(Web服務器用戶),組設為adm
chmod -R 640 storage/logs # 設置目錄權限為640(所有者可讀寫,組可讀,其他無權限)
若日志文件被占用無法刪除,可嘗試重啟Web服務器(如systemctl restart apache2
)或PHP-FPM服務(如systemctl restart php-fpm
)。