温馨提示×

thinkphp在ubuntu中的日志管理策略

小樊
58
2025-08-29 21:26:32
栏目: 编程语言

一、日志配置

config/log.php 中设置日志通道、级别、路径等参数,如:

return [
    'default' => 'file',
    'channels' => [
        'file' => [
            'type' => 'file',
            'path' => runtime_path('logs'), // 日志存储路径(可自定义)
            'level' => ['info', 'error'], // 记录级别
            'max_files' => 30, // 保留天数/文件数
            'json' => false, // 是否JSON格式
        ],
        // 可添加数据库、远程等通道
    ],
];

二、日志记录

使用 think\facade\Log 记录不同级别日志:

use think\facade\Log;
Log::info('用户登录', ['user_id' => 1]); // 信息日志
Log::error('支付失败', ['order_id' => 1001]); // 错误日志

三、日志查看

  • 直接查看:通过文件管理器或命令行查看 runtime/logs 目录下的日志文件。
  • 命令行工具:使用 grepawk 筛选日志,或 tail -f 实时查看。

四、日志清理

  • 手动清理:直接删除 runtime/logs 下的旧日志文件。
  • 定时任务:通过 Ubuntu 的 cron 定期清理,例如每天凌晨删除7天前的日志:
    # 编辑定时任务
    crontab -e
    # 添加以下内容(每天0点执行)
    0 0 * * * find /path/to/project/runtime/logs -type f -mtime +7 -exec rm -f {} \;
    

五、高级管理

  • 日志轮转:结合 Ubuntu 的 logrotate 工具,配置按天/大小轮转日志,避免单个文件过大。
  • 集中化管理:将日志发送至远程服务器(如ELK Stack),通过 rsyslog 或自定义驱动实现。
  • 权限控制:确保 runtime/logs 目录权限为 640,仅允许应用写入。

六、安全与优化

  • 敏感信息过滤:避免在日志中记录密码、token 等敏感数据。
  • 性能优化:高频日志场景使用 Log::batch(true) 开启批量写入。

参考来源:

0