关于 instrument-logs
用于为代码库添加 PostHog 日志采集的开发技能,适用于实现功能或审查 PR 的开发者。它根据平台指导配置 OpenTelemetry 导出,并在现有日志系统旁添加结构化日志采集。
主要功能
- 01检测语言、框架与日志配置
- 02配置 OTLP 导出器
- 03与现有日志处理器并行集成
- 04添加结构化键值属性
- 05提供平台专属配置参考
适用场景
- 01为新功能添加 PostHog 日志采集
- 02在不替换现有日志的情况下配置导出
- 03为日志补充便于筛选的结构化属性
MCP 相关
技能可使用 PostHog MCP 服务的 `projects-get` 工具获取项目 API 令牌。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ posthog/ skills --skill instrument-logs安装后在 Claude Code 中输入/instrument-logs确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/android.mdbest-practices.mdCOMMANDMENTS.mddatadog.mdflutter.mdgo.mdios.mdjava.mdlink-session-replay.mdmcp.mdnextjs.mdnodejs.mdother.mdpython.mdreact-native.mdsearch.mdstart-here.mdtroubleshooting.md详细介绍
添加 PostHog 日志采集
使用此技能为新增或修改的代码添加 PostHog 日志采集。在实现功能或审查 PR 后使用此技能,确保采集到包含结构化属性的有效日志事件。如果尚未配置 PostHog 日志导出,此技能也涵盖 OTLP 导出器的初始设置。支持任何平台或语言。
支持的平台:Next.js、Node.js、Python、Go、Java、Datadog、Android、React Native、iOS,以及通过 OpenTelemetry 支持的任何语言。
说明
请按顺序执行以下步骤:
步骤 1:分析代码库并检测平台。
- 检测语言、框架和现有日志设置。
- 查找依赖文件和项目文件(package.json、Podfile、Package.swift、requirements.txt、go.mod、pom.xml 等)。
- 查找日志库(winston、pino、logging module、logrus、log4j、serilog、os_log、Logger 等)。
- 查找锁定文件(pnpm-lock.yaml、package-lock.json、yarn.lock、bun.lockb、go.sum、Podfile.lock、Package.resolved 等),以确定包管理器。
- 检查是否已设置 PostHog 日志导出。如果已配置 OTLP 导出器,则跳到步骤 5,为新代码添加日志捕获。
步骤 2:研究日志捕获。(如果已配置 PostHog 日志导出,则跳过。) 2.1. 找到下方与检测到的平台匹配的参考文件——它是 OTLP 导出器配置以及与现有日志集成方式的权威依据。现在阅读该文件。 2.2. 如果没有匹配的参考文件,则使用“其他语言”参考文件作为备用方案——其中介绍了通用的 OpenTelemetry 方法。
步骤 3:安装依赖项。(如果已配置 PostHog 日志导出,则跳过。)
- 为检测到的平台安装 OpenTelemetry SDK 和 OTLP 导出器包。
- 不要手动编辑依赖文件——请使用包管理器的安装命令。
步骤 4:配置 OTLP 导出器。(如果已配置 PostHog 日志导出,则跳过。)
- PostHog 日志使用 OpenTelemetry 协议。请设置指向 PostHog 接收端点的 OTLP 导出器。
- 对于 Android、React Native 和 iOS 等支持 SDK 原生日志的情况,请遵循平台参考文件,而不是添加单独的 OTLP 导出器。
- 按照平台专属参考文件进行精确配置。
步骤 5:与现有日志集成。
- 在现有日志设置旁添加 PostHog 日志导出器。不要替换现有日志处理器或输出。
- 不要改变现有文件的基本架构。只进行最少且有针对性的添加。
- 尝试写入文件前,必须立即读取该文件。
步骤 6:添加结构化属性。
- 确保日志包含结构化键值属性,以便在 PostHog 中进行筛选和搜索。
- 优先使用带键值属性的结构化日志格式,而不是纯文本消息。
步骤 7:设置环境变量。
- 检查项目是否已配置 PostHog 环境变量(例如在
.env、.env.local或框架专属环境文件中)。如果已有有效值,则跳过此步骤。 - 如果缺少 PostHog 项目令牌,请使用 PostHog MCP 服务的
projects-get工具获取项目的api_token。如果返回了多个项目,请询问用户要使用哪个项目。如果 MCP 服务未连接或未经身份验证,请改为向用户索取 PostHog 项目令牌。 - 对于 PostHog 主机 URL:检查
projects-getMCP 响应中的region字段——US对应https://us.i.posthog.com,EU对应https://eu.i.posthog.com。如果 MCP 响应或现有项目配置中没有区域信息,请询问用户:“您使用的是 PostHog US Cloud 还是 EU Cloud?”不要默认使用 US Cloud。 - 对于 OpenTelemetry 端点,根据上面确定的区域,使用
https://us.i.posthog.com/v1(US)或https://eu.i.posthog.com/v1(EU)。 - 按照框架的命名约定,将这些值写入相应的环境文件。
- 在代码中引用这些环境变量,而不是将它们硬编码。
参考文件
references/nextjs.md- Next.js 日志安装references/nodejs.md- Node.js 日志安装references/python.md- Python 日志安装references/go.md- Go 日志安装references/java.md- Java 日志安装references/datadog.md- Datadog 日志安装references/android.md- Android 日志安装references/react-native.md- React Native 日志安装references/ios.md- iOS 日志安装references/flutter.md- Flutter 日志安装references/other.md- 其他语言的日志安装references/start-here.md- 日志入门references/search.md- 搜索日志references/best-practices.md- 日志最佳实践references/troubleshooting.md- 日志故障排查references/link-session-replay.md- 关联会话回放references/mcp.md- 通过 PostHog MCP 使用日志references/COMMANDMENTS.md- 集成必须遵循的特定框架规则
每个平台参考文件都包含特定的 OTLP 配置、SDK 设置和集成模式。请找到与用户技术栈匹配的文件。
关键原则
- 环境变量:始终使用环境变量存储 PostHog 密钥和 OpenTelemetry 端点。切勿将它们硬编码。
- 最小改动:在现有日志记录旁添加日志导出。不要替换或重构现有日志代码。
- OpenTelemetry:PostHog 日志使用 OpenTelemetry 协议。配置一个指向 PostHog 接收端点的 OTLP 导出器,除非平台 SDK 提供原生日志捕获功能。
- SDK 原生日志:对于 Android、React Native 和 iOS,请使用平台参考文件中的 SDK 日志记录器/捕获 API,而不是添加单独的 OTLP 导出器。
- 结构化日志:优先使用带有键值属性的结构化日志格式,而不是纯文本消息。