在 Debian 上“管 Laravel 日志”,通常可以从 Laravel 自身配置 + Debian 系统工具(logrotate / systemd / rsyslog) 两方面来做。下面按“从简单到规范”的方式说。
Laravel 日志在 config/logging.php 中配置。
常用方式:
// config/logging.php
'default' => env('LOG_CHANNEL', 'stack'),
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'days' => 14,
],
],
✅ 推荐用 daily 通道(自动按天切日志)
LOG_CHANNEL=daily
Laravel 日志目录必须可被 Web 用户写:
sudo chown -R www-data:www-data storage
sudo chmod -R 755 storage
如果你用 PHP-FPM:
ps aux | grep php-fpm
确认用户是 www-data
即使你用 daily 通道,也建议用 logrotate 防止磁盘爆掉。
创建配置文件:
sudo nano /etc/logrotate.d/laravel
示例(daily + 压缩 + 保留 14 天):
/var/www/your-project/storage/logs/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0644 www-data www-data
sharedscripts
postrotate
systemctl reload php8.2-fpm > /dev/null 2>&1 || true
endscript
}
测试:
sudo logrotate -d /etc/logrotate.d/laravel
如果你想统一看系统日志:
// config/logging.php
'syslog' => [
'driver' => 'syslog',
'level' => 'debug',
],
Debian 下日志在:
sudo tail -f /var/log/syslog
如果你用:
php artisan queue:work
建议用 systemd:
sudo nano /etc/systemd/system/laravel-queue.service
[Unit]
Description=Laravel Queue Worker
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/your-project
ExecStart=/usr/bin/php artisan queue:work
Restart=always
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl enable laravel-queue
sudo systemctl start laravel-queue
查看日志:
journalctl -u laravel-queue -f
storage/logs 权限不对LOG_CHANNEL 没生效single 且长期不清理tail -f storage/logs/laravel-*.log
✅ 日常推荐方案
LOG_CHANNEL=dailylogrotatewww-data 权限正确如果你愿意,我可以: