23日0145-增加日志收集器启用禁用配置功能.md 3.5 KB

增加日志收集器启用/禁用配置功能

任务概述

为日志收集系统增加配置项,用于控制每个收集器的启动和关闭状态,提供更灵活的日志收集管理功能。

完成时间

2025-06-23 01:45

实现内容

1. 数据库配置项

kku_game_configs 表中添加了5个日志收集器的开关配置项:

  • user_log.collector.fund.enabled - 资金日志收集器开关
  • user_log.collector.item.enabled - 物品日志收集器开关
  • user_log.collector.farm_harvest.enabled - 农场收获日志收集器开关
  • user_log.collector.farm_upgrade.enabled - 农场升级日志收集器开关
  • user_log.collector.point.enabled - 积分日志收集器开关

所有配置项默认为启用状态(值为1),类型为布尔值。

2. 服务层增强

GameConfigService 中添加了收集器状态管理方法:

  • isCollectorEnabled(string $collectorName): bool - 检查指定收集器是否启用
  • getCollectorStates(): array - 获取所有收集器的启用状态
  • setCollectorStates(array $states): bool - 批量设置收集器启用状态

GameConfigLogic 中添加了:

  • setBool(string $key, bool $value): bool - 设置布尔值配置

3. 收集器管理器改进

修改 UserLogCollectorManager 类:

  • collectAll() 方法中增加收集器启用状态检查
  • collectByName() 方法中增加收集器启用状态检查
  • getCollectorsInfo() 方法中增加启用状态信息
  • 禁用的收集器会被跳过执行,状态标记为 'disabled'

4. 命令行界面优化

修改 CollectUserLogsCommand 类:

  • 在收集器信息显示中增加启用/禁用状态标识
  • 在执行结果显示中区分成功、失败、禁用三种状态
  • 为禁用的收集器提供友好的提示信息

5. 后台管理界面

通过现有的 GameSystemConfigController 可以:

  • 查看所有日志收集器的配置项
  • 编辑收集器的启用/禁用状态
  • 实时生效,支持动态控制

功能特点

  1. 灵活控制:可以单独控制每个收集器的启用/禁用状态
  2. 实时生效:配置修改后立即生效,无需重启服务
  3. 友好界面:命令行和后台管理界面都有清晰的状态显示
  4. 向后兼容:默认所有收集器都是启用状态,不影响现有功能
  5. 批量操作:支持批量设置多个收集器的状态

使用方法

命令行查看状态

php artisan game:collect-user-logs --info

后台管理

访问:http://kku_laravel.local.gd/admin/game-system-configs 搜索 "user_log.collector" 可以找到所有收集器配置项

代码中使用

// 检查单个收集器状态
$enabled = GameConfigService::isCollectorEnabled('fund');

// 获取所有收集器状态
$states = GameConfigService::getCollectorStates();

// 批量设置收集器状态
GameConfigService::setCollectorStates([
    'fund' => true,
    'item' => false,
    'point' => true
]);

测试验证

  1. ✅ 配置项正确添加到数据库
  2. ✅ 后台管理界面正常显示和编辑
  3. ✅ 命令行正确显示收集器状态
  4. ✅ 禁用的收集器被正确跳过
  5. ✅ 配置修改实时生效

技术细节

  • 使用游戏配置系统的缓存机制,性能良好
  • 遵循项目的命名规范和架构设计
  • 添加了完整的中文注释
  • 保持了代码的一致性和可维护性

影响范围

  • 新增配置项,不影响现有数据
  • 增强了日志收集系统的可控性
  • 为运维提供了更灵活的管理工具
  • 所有收集器默认启用,保持向后兼容