centos

ThinkPHP在CentOS上的日志管理如何进行

小樊
47
2025-09-11 17:50:52
栏目: 编程语言

ThinkPHP在CentOS上的日志管理主要涉及配置、查看、清理及高级操作,具体如下:

一、基础配置

  1. 修改配置文件
    config/log.php中设置日志参数,如存储路径、级别、通道等:

    return [
        'default' => 'file', // 默认通道
        'channels' => [
            'file' => [
                'type' => 'file',
                'path' => runtime_path('logs'), // 日志目录(默认runtime/log)
                'level' => ['info', 'error'], // 记录级别
                'max_files' => 30, // 保留天数/文件数
            ],
            'db' => [ // 数据库日志(需提前创建表)
                'type' => 'database',
                'table' => 'system_logs',
                'connection' => 'log_db',
            ],
        ],
    ];
    

    支持file(文件)、database(数据库)、custom(自定义)等驱动。

  2. 动态切换通道
    代码中可通过Log::channel('通道名')指定日志存储位置,如:

    Log::channel('db')->error('数据库异常', ['sql' => $sql]);
    

二、日志查看与监控

  1. 命令行查看

    • 实时查看日志文件:
      tail -f runtime/logs/2025-09-11.log  # 按日期分割的日志文件
      
    • 使用journalctl查看系统日志(需配置rsyslog转发):
      journalctl -u nginx -f  # 查看Nginx相关日志
      
  2. 日志文件管理

    • 手动清理:直接删除runtime/logs目录下过期文件。
    • 自动轮转:通过CentOS的logrotate工具配置定期切割(如按天/大小分割):
      # 示例:/etc/logrotate.d/thinkphp
      /path/to/runtime/logs/*.log {
          daily
          rotate 30
          compress
          missingok
          create 0640 www-data adm
      }
      

三、高级功能

  1. 日志分级存储
    将不同级别日志分离存储,例如:

    'channels' => [
        'error_file' => [
            'type' => 'file',
            'path' => runtime_path('logs/error'),
            'level' => ['error', 'critical'],
            'apart_level' => true, // 每个级别单独文件
        ],
        'info_file' => [
            'type' => 'file',
            'path' => runtime_path('logs/info'),
            'level' => ['info', 'debug'],
        ],
    ],
    
  2. 集成ELK等分析工具

    • 将日志输出为JSON格式,便于ELK(Elasticsearch+Logstash+Kibana)分析:
      'json_log' => [
          'type' => 'file',
          'path' => runtime_path('logs/json'),
          'json' => true,
          'level' => ['info', 'error'],
      ],
      
    • 通过rsyslogFilebeat将日志实时传输至远程服务器。
  3. 权限与安全

    • 确保runtime/logs目录权限为640,避免敏感信息泄露:
      chmod 640 runtime/logs/*  
      chown -R www-data:adm runtime/logs  # 根据实际用户调整
      
    • 敏感信息(如密码、token)需在记录前过滤。

四、参考资料

0
看了该问题的人还看了