温馨提示×

Linux下Laravel日志如何管理

小樊
32
2025-12-14 09:44:19
栏目: 智能运维

Linux下Laravel日志管理

一 基础与快速查看

  • 日志默认目录为:storage/logs/,常见文件为 laravel.log 或按天生成的 laravel-YYYY-MM-DD.log
  • 常用查看命令:
    • 实时查看:tail -f storage/logs/laravel.log
    • 查看末尾100行:tail -n 100 storage/logs/laravel.log
    • 关键字检索:grep "关键字" storage/logs/laravel.log
  • 写入日志(代码层面):
    • \Log::info('信息', ['k'=>'v']);
    • \Log::error('错误', ['exception'=>$e]);
  • 生产环境务必关闭调试:APP_DEBUG=false,避免泄露敏感信息。

二 配置日志级别与通道

  • .env 中控制全局日志级别:LOG_LEVEL=error(只记录 error 及以上级别)。
  • config/logging.php 选择驱动与通道:
    • 常用驱动:single(单文件)、daily(按天分割)、stack(聚合多个通道)、syslog(对接系统日志)、slack(即时告警)。
    • 生产推荐:默认使用 stack,组合 daily(落盘)与 slack(错误告警)。
  • 示例(channels 配置片段):
    • 'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', 'days' => 30, ],
    • 'slack' => [ 'driver' => 'slack', 'url' => env('LOG_SLACK_WEBHOOK_URL'), 'level' => 'error', ],
    • 'default' => env('LOG_CHANNEL', 'stack'),

三 日志轮转与系统级清理

  • 推荐用 logrotate 做系统级轮转,创建 /etc/logrotate.d/laravel
    • 示例配置:
      /path/to/your/laravel/storage/logs/*.log {
          daily
          missingok
          rotate 14
          compress
          notifempty
          create 640 www-data adm
      }
      
    • 关键参数说明:
      • daily:按天轮转;rotate 14:保留14天;compress:压缩旧日志;
      • create 640 www-data adm:轮转后新建文件的权限与属主(请按实际 Web 服务用户调整,如 www-data/apache/nginx)。
  • 调试与强制执行:
    • 手动测试:sudo logrotate -f /etc/logrotate.conf
    • 安装(如未安装):Debian/Ubuntu 系 sudo apt-get install logrotate

四 权限与常见问题

  • 确保日志目录可写(以 www-data 为例):
    • sudo chown -R www-data:www-data /var/www/your_project/storage/logs
    • sudo chmod -R 755 /var/www/your_project/storage/logs
  • 若使用 daily 驱动,务必设置保留天数(如 days=30),避免无限增长。
  • 生产务必关闭调试:APP_DEBUG=false,减少日志噪声与信息泄露风险。

五 集中化与告警实践

  • 远程与集中式日志:
    • 使用 syslog 驱动对接系统日志,再由 rsyslog/Logstash 收集到 ELK/Graylog
    • 使用 Papertrail/Loggly 等 SaaS 服务做检索与告警;
    • stack 通道中同时组合 daily(落盘)与 slack/第三方(告警),实现“落盘+实时通知”。

0