# 增加日志收集器启用/禁用配置功能 ## 任务概述 为日志收集系统增加配置项,用于控制每个收集器的启动和关闭状态,提供更灵活的日志收集管理功能。 ## 完成时间 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. **批量操作**:支持批量设置多个收集器的状态 ## 使用方法 ### 命令行查看状态 ```bash php artisan game:collect-user-logs --info ``` ### 后台管理 访问:http://kku_laravel.local.gd/admin/game-system-configs 搜索 "user_log.collector" 可以找到所有收集器配置项 ### 代码中使用 ```php // 检查单个收集器状态 $enabled = GameConfigService::isCollectorEnabled('fund'); // 获取所有收集器状态 $states = GameConfigService::getCollectorStates(); // 批量设置收集器状态 GameConfigService::setCollectorStates([ 'fund' => true, 'item' => false, 'point' => true ]); ``` ## 测试验证 1. ✅ 配置项正确添加到数据库 2. ✅ 后台管理界面正常显示和编辑 3. ✅ 命令行正确显示收集器状态 4. ✅ 禁用的收集器被正确跳过 5. ✅ 配置修改实时生效 ## 技术细节 - 使用游戏配置系统的缓存机制,性能良好 - 遵循项目的命名规范和架构设计 - 添加了完整的中文注释 - 保持了代码的一致性和可维护性 ## 影响范围 - 新增配置项,不影响现有数据 - 增强了日志收集系统的可控性 - 为运维提供了更灵活的管理工具 - 所有收集器默认启用,保持向后兼容