温馨提示×

怎样用debian管laravel日志

小樊
36
2026-09-14 10:10:22
栏目: 智能运维

在 Debian 上“管 Laravel 日志”,通常可以从 Laravel 自身配置 + Debian 系统工具(logrotate / systemd / rsyslog) 两方面来做。下面按“从简单到规范”的方式说。


一、Laravel 自带的日志管理(先搞定应用层)

1. 日志通道配置

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

2. 日志权限问题(Debian 常见坑)

Laravel 日志目录必须可被 Web 用户写:

sudo chown -R www-data:www-data storage
sudo chmod -R 755 storage

如果你用 PHP-FPM:

ps aux | grep php-fpm

确认用户是 www-data


二、Debian 系统层日志管理(生产必做)

3. 用 logrotate 管理 Laravel 日志

即使你用 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

4. 把 Laravel 日志接入 syslog(可选)

如果你想统一看系统日志:

// config/logging.php
'syslog' => [
    'driver' => 'syslog',
    'level' => 'debug',
],

Debian 下日志在:

sudo tail -f /var/log/syslog

三、用 systemd 管理 Laravel 队列 / 命令日志(进阶)

如果你用:

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 没生效
  • PHP 报错但没捕获

磁盘爆了

  • 没配 logrotate
  • 用 single 且长期不清理

想实时看日志

tail -f storage/logs/laravel-*.log

五、推荐生产组合(总结)

✅ 日常推荐方案

  • LOG_CHANNEL=daily
  • Debian logrotate
  • www-data 权限正确
  • 队列用 systemd

如果你愿意,我可以:

  • 给你一份 完整的 Debian + Laravel 生产部署日志方案
  • 或按你用的 Nginx / Apache / PHP 版本 精确配置

0 踩