温馨提示×

Debian系统下Laravel日志管理方法

小樊
32
2025-12-11 03:29:04
栏目: 智能运维

Debian下Laravel日志管理实践

一 基础配置与查看

  • 日志默认位于项目根目录的storage/logs/laravel.log;按日生成的日志通常为laravel-YYYY-MM-DD.log。在 .env 中可设置通道与级别,例如:LOG_CHANNEL=daily,LOG_LEVEL=debug。在代码中可使用 Log 门面记录:Log::info(‘…’)、Log::error(‘…’)。实时查看可用命令:php artisan tail(开发环境尤为便利)。

二 日志轮转与清理

  • 使用系统自带的 logrotate 做按日轮转与压缩,创建配置文件 /etc/logrotate.d/laravel,示例(按项目默认路径):
    /path/to/your/laravel/storage/logs/*.log {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
    }
    
    如将日志写入系统目录(如 /var/log/laravel.log),可用 copytruncate 方式避免应用重开文件句柄:
    /var/log/laravel.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        copytruncate
        create 664 www-data adm
    }
    
    测试与生效:logrotate -f /etc/logrotate.conf。Laravel 的 daily 通道本身也会按天生成新文件并在配置的天数后自动清理,可与系统 logrotate 并行使用以控制总占用与归档压缩。

三 通道选择与系统日志集成

  • 常用通道与用途:
    • single:单文件,简单项目或低流量环境。
    • daily:按日分文件,便于按时间定位与清理。
    • syslog:输出到系统日志,便于与 rsyslog/集中式日志平台整合。
    • errorlog:使用 PHP 的 error_log 输出,适配部分宿主环境。
    • stack:组合多个通道(如 daily + slack/email)做多路输出。
  • 示例(使用系统日志):
    • .env:LOG_CHANNEL=syslog,LOG_SYSLOG_IDENTIFIER=laravel
    • 如需在 config/logging.php 中自定义 syslog 通道,可设置 driver 为 syslog 并指定 identifier、facility 等参数。这样便于与 rsyslog/Logstash 等做远程集中与结构化处理。

四 目录权限与常见问题

  • 确保日志目录可写(以 www-data 运行时的常见做法):
    sudo mkdir -p storage/logs
    sudo chown -R www-data:www-data storage/logs
    sudo chmod -R 755 storage/logs
    
    若日志目录不可写,Laravel 可能出现阻塞或无法写入的情况;此时应先修复权限,再继续排查。生产环境不建议以 root 运行 Web 服务进程。

0