插件窝 干货文章 Laravel在Linux上如何做日志管理

Laravel在Linux上如何做日志管理

Laravel 日志 使用 配置 179    来源:    2025-05-10

Laravel 在 Linux 上的日志管理方案

Laravel 提供了强大的日志系统,结合 Linux 平台的特点,可以构建高效的日志管理方案。以下是完整的解决方案:

1. Laravel 日志基础配置

日志通道配置

config/logging.php 中配置:

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily', 'syslog'],
        'ignore_exceptions' => false,
    ],

    'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => env('LOG_LEVEL', 'debug'),
        'days' => 14, // 保留14天的日志
    ],

    'syslog' => [
        'driver' => 'syslog',
        'level' => 'error', // 只记录错误级别到系统日志
    ],

    // 其他通道...
],

2. Linux 系统日志集成

使用 Syslog

Laravel 可以集成到 Linux syslog 系统:

  1. 确保 syslog 服务运行:

    sudo systemctl status rsyslog
    
  2. 配置 rsyslog 接收 Laravel 日志(在 /etc/rsyslog.d/laravel.conf):

    if $programname == 'laravel' then /var/log/laravel.log
    & stop
    
  3. 重启 rsyslog:

    sudo systemctl restart rsyslog
    

3. 日志轮转配置

使用 logrotate

创建 /etc/logrotate.d/laravel

/var/www/your-project/storage/logs/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 644 www-data www-data
    sharedscripts
    postrotate
        /usr/bin/find /var/www/your-project/storage/logs/ -type f -name "*.log" -mtime +14 -delete
    endscript
}

测试配置:

sudo logrotate -d /etc/logrotate.d/laravel

4. 高级日志管理

使用集中式日志系统

  • ELK Stack (Elasticsearch, Logstash, Kibana)
  • Fluentd
  • Graylog

示例 Fluentd 配置:

<source>
  @type tail
  path /var/www/your-project/storage/logs/laravel.log
  pos_file /var/log/td-agent/laravel.log.pos
  tag laravel
  format none
</source>

<match laravel>
  @type elasticsearch
  host localhost
  port 9200
  logstash_format true
  logstash_prefix laravel
</match>

5. 性能优化

  1. 异步日志:使用 queue 驱动

    'channels' => [
       'async' => [
           'driver' => 'stack',
           'channels' => ['daily'],
           'via' => Illuminate\Log\LogManager::class,
           'connection' => 'redis',
       ],
    ],
    
  2. 日志级别控制:生产环境使用 'level' => 'error'

6. 监控与告警

使用 Prometheus + Grafana

安装 spatie/laravel-prometheus 包监控日志错误率

设置日志告警

# 使用 fail2ban 监控错误日志
sudo nano /etc/fail2ban/jail.d/laravel.conf

内容:

[laravel-auth]
enabled = true
filter = laravel-auth
logpath = /var/www/your-project/storage/logs/laravel.log
maxretry = 5
bantime = 3600

7. 常用命令

  • 查看实时日志:

    tail -f storage/logs/laravel.log
    
  • 按日期筛选日志:

    grep "2023-11-01" storage/logs/laravel.log
    
  • 查找错误日志:

    grep -i error storage/logs/laravel.log
    

8. 最佳实践

  1. 生产环境禁用 debug 级别日志
  2. 敏感信息不要记录到日志
  3. 定期检查日志文件大小
  4. 为不同业务模块使用不同日志通道
  5. 考虑使用结构化日志格式(JSON)

通过以上配置,您可以构建一个高效、可靠的 Laravel 日志管理系统,充分利用 Linux 平台的日志管理工具和功能。