SuperAPI AI 工具集

logging-setup

部署与运维

查看项目

更新于 10-16 08:08

技能介绍

用途:将项目中的 print() 替换为 Apple 结构化日志系统(os.log/Logger),以获得更好的调试能力、隐私控制和 Console.app 集成。当用户要求“添加日志”“替换 print 语句”,或提及 os.log、Logger、结构化日志、调试/生产日志,或想审计代码中的 print() 使用时触发。

主要能力:相比 print(),Logger 的调试日志在 Release 中可被编译剔除,可按 subsystem/category 在 Console.app 中过滤,支持 .private/.public/.sensitive 隐私标注,并采用延迟求值以提升性能。技能提供三种模式:审计(用 Grep: print\s*( 查找所有 print 语句,报告文件:行号、严重级别与建议的 Logger 级别)、生成(从零创建日志基础设施)、迁移(将现有 print() 转换为 Logger 并给出建议)。

使用方式:生成前会检测部署目标(Logger 需 iOS 14+ / macOS 11+)、搜索已有 Logger/os.log 使用、识别源文件位置,并通过 Glob: **/Logger.swift、Grep: "import OSLog" 或 "os_log" 检测冲突,若已存在则询问是扩展、替换还是新建独立 logger。随后通过 AskUserQuestion 询问所需分类(默认 Network、Auth、UI、Data)、自定义分类及是否包含迁移辅助。生成时读取 templates/AppLogger.swift 模板并定制:从 Bundle.main.bundleIdentifier 设置 subsystem、添加用户指定分类、在注释中加入用法示例。文件位置按项目结构决定:有 Sources/ 则放 Sources/Logging/AppLogger.swift,有 App/ 则放 App/Logging/AppLogger.swift,否则放 Logging/AppLogger.swift。迁移示例:print("User logged in: (email)") 改为 AppLogger.auth.info("User logged in: (email, privacy: .private)")。

隐私标注:.public 适合记录 ID、计数等非敏感信息;.private 在发布版中被遮蔽(如邮箱、姓名);.sensitive 始终遮蔽(如密码、令牌)。

适用场景与限制:适用于需要结构化日志、隐私控制与 Console.app 过滤的 Apple 平台项目。需注意 Logger 要求 iOS 14+/macOS 11+,且具体模板内容与参考文档(logger-patterns.md、migration-guide.md)细节暂未提供。