linux

Linux上Laravel日志如何管理

小樊
44
2025-10-09 22:18:52
栏目: 智能运维

Linux环境下Laravel日志管理指南

1. 日志文件位置

Laravel的日志文件默认集中存储在项目根目录下的storage/logs文件夹中,常见文件包括laravel.log(框架主日志)、按日期命名的每日日志(如laravel-2025-10-09.log,使用daily通道时生成)。通过SSH登录服务器后,可通过cd /path/to/project/storage/logs快速访问该目录。

2. 日志级别控制

Laravel支持8种日志级别(从高到低):emergency(系统不可用)、alert(必须立即处理)、critical(关键组件失败)、error(运行时错误)、warning(异常但可恢复)、notice(正常但重要的事件)、info(常规信息)、debug(详细调试信息)。
通过修改项目根目录下的.env文件中的LOG_LEVEL变量,可全局控制日志记录级别(仅记录该级别及以上的日志)。例如,生产环境建议设置为error(仅记录错误及以上),开发环境可设置为debug(记录详细信息):
LOG_LEVEL=error

3. 日志轮转配置

为防止日志文件无限膨胀占用磁盘空间,需使用Linux系统自带的logrotate工具实现自动轮转。创建/etc/logrotate.d/laravel配置文件,添加以下内容(根据项目路径调整):

/path/to/your/laravel/storage/logs/*.log {
    daily                # 每天轮转一次
    missingok            # 若日志文件不存在也不报错
    rotate 14            # 保留最近14天的日志
    compress             # 压缩旧日志(节省空间)
    notifempty           # 若日志为空则不轮转
    create 640 www-data adm  # 创建新日志文件,权限640,所有者www-data(Apache/Nginx用户),所属组adm
}

保存后,logrotate会按配置自动执行(通常每日由cron触发)。

4. Laravel日志门面使用

Laravel提供的Log门面可方便在代码中记录日志,支持链式调用和上下文信息传递。常用方法如下:

use Illuminate\Support\Facades\Log;

// 记录不同级别的日志
Log::emergency('系统不可用!');          // 紧急情况
Log::alert('需要立即处理的事件!');      // 高优先级警报
Log::critical('数据库连接失败!');       // 关键组件故障
Log::error('订单支付失败:'.$order_id);  // 运行时错误(带上下文)
Log::warning('API响应超时:'.$url);      // 异常但可恢复
Log::notice('用户登录成功:'.$user_id);  // 正常但重要的事件
Log::info('用户访问了首页');            // 常规信息
Log::debug('请求参数:'.print_r($request->all(), true)); // 调试详情(需开启debug模式)

日志会自动写入对应通道的文件中(如single通道对应laravel.log)。

5. 第三方日志管理工具集成

对于需要更强大功能的场景(如实时监控、搜索、告警、分布式追踪),可集成第三方日志管理工具:

6. 日志清理策略

logrotate自动轮转外,还需定期清理过期日志以避免磁盘空间耗尽:

7. 日志查看与监控

日常运维中,需定期查看日志以快速定位问题:

0
看了该问题的人还看了