Linux系統中Laravel日志管理指南
Laravel的日志文件默認存儲在項目根目錄的storage/logs
文件夾下(如laravel.log
是默認的全局日志文件)。在Linux系統中,可通過以下基礎命令快速操作日志:
tail -f storage/logs/laravel.log
,可實時跟蹤日志輸出,便于調試實時問題;less storage/logs/laravel.log
,支持上下翻頁、搜索關鍵詞(如/error
),適合查看歷史日志;truncate -s 0 storage/logs/laravel.log
(快速清空)或echo "" > storage/logs/laravel.log
(清空內容),避免手動刪除文件;find
命令批量刪除超過指定天數的日志,例如find /path/to/project/storage/logs -type f -name "*.log" -mtime +14 -exec rm -f {} \;
(刪除14天前的.log
文件)。Laravel支持8種日志級別(從嚴重到輕微):emergency
(系統不可用)、alert
(必須立即處理)、critical
(關鍵組件失?。?、error
(運行時錯誤)、warning
(警告信息)、notice
(普通但重要的事件)、info
(常規信息)、debug
(調試詳情)。
.env
文件中設置LOG_LEVEL
變量,例如LOG_LEVEL=error
(僅記錄error
及以上級別日志),減少不必要的日志輸出;Log
門面記錄不同級別的日志,例如\Log::info('用戶登錄成功')
(記錄info日志)、\Log::error('數據庫連接失敗')
(記錄error日志);php artisan queue:work --log-level=warning
(隊列任務僅記錄warning
及以上級別日志)。為避免日志文件無限增長占用磁盤空間,推薦使用Linux自帶的logrotate
工具實現自動輪轉。
/etc/logrotate.d/
目錄下新建laravel
文件(如/etc/logrotate.d/laravel
),添加以下內容(根據項目路徑調整):/var/www/your_project/storage/logs/*.log {
daily # 每天輪轉一次
missingok # 若日志文件不存在也不報錯
rotate 14 # 保留最近14天的日志
compress # 壓縮舊日志(節省空間)
notifempty # 若日志為空則不輪轉
create 0640 www-data adm # 創建新日志文件,設置權限(www-data為Web用戶,adm為日志組)
}
logrotate -vf /etc/logrotate.d/laravel
(-v
顯示詳細過程,-f
強制輪轉),驗證配置是否正確。Laravel的日志配置文件位于config/logging.php
,支持多種日志通道(Channel),可根據需求自定義:
stack
通道(默認使用)會將日志發送到多個通道(如single
和daily
),適合生產環境;single
通道將日志寫入單個文件(如storage/logs/laravel.log
),適合小型項目;daily
通道每天生成一個新的日志文件(如laravel-2025-10-12.log
),并支持設置保留天數(days
參數),適合生產環境;'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single', 'daily'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14, // 保留14天的日志
],
],
可通過修改.env
中的LOG_CHANNEL
變量切換默認通道(如LOG_CHANNEL=daily
)。若需要更強大的日志管理能力(如實時監控、搜索、告警),可集成第三方工具:
composer require monolog/monolog
擴展,支持將日志發送到數據庫、遠程服務器(如Syslog)、消息隊列等;為避免手動清理日志,可將清理命令添加到cron
定時任務中:
crontab -e
,添加以下內容(每天凌晨1點清理14天前的日志):0 1 * * * find /path/to/your/laravel/storage/logs -type f -name "*.log" -mtime +14 -exec rm -f {} \;
crontab -l
查看當前用戶的cron任務,確認命令已添加。