Files
skill-template/docs/LOGGING.md

60 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenClaw 技能日志约定(各技能统一)
本文档为**规范**:新技能与 `account-manager` 等现有技能应遵循同一套路径、格式与环境变量,便于排查与运维。
## 目录与文件
- 日志目录与技能数据目录同级:
- `{JIANGCHANG_DATA_ROOT}/{JIANGCHANG_USER_ID}/{skill_slug}/logs/`
- 主日志文件(示例):
- `{...}/account-manager/logs/account-manager.log`
- `skill_slug``SKILL.md``metadata.openclaw.slug` 一致。
## 轮转与编码
- 使用 Python `logging.handlers.TimedRotatingFileHandler``when=midnight`,保留约 30 个历史文件(可按技能调整 `backupCount`)。
- 文件编码 **UTF-8**
- 首次写日志前创建 `logs/` 目录(`exist_ok=True`)。
## 日志格式(行文本)
推荐单行格式(与 `account-manager` 一致):
```text
%(asctime)s | %(levelname)-8s | %(name)s | %(message)s
```
`datefmt` 建议:`%Y-%m-%dT%H:%M:%S`(本地时间)。
## Logger 命名
- 使用分层命名,便于按前缀过滤,例如:`openclaw.skill.account_manager`
- 子进程若需写同一文件,可使用子 logger`openclaw.skill.account_manager.login_child`,仍追加到**同一日志文件**`logging.FileHandler(..., encoding='utf-8')` 追加模式)。
## 环境变量(全局)
| 变量 | 说明 |
|------|------|
| `JIANGCHANG_LOG_LEVEL` | 默认 `INFO`;调试轮询等可设 `DEBUG`。 |
| `JIANGCHANG_LOG_TO_STDERR` | 设为 `1`/`true` 时,将 `WARNING` 及以上同时输出到 `stderr`(不替代文件)。 |
| `JIANGCHANG_{SKILL}_LOG_FILE` | 可选,覆盖该技能主日志**绝对路径**(需自行保证目录可写)。`account-manager` 使用 `JIANGCHANG_ACCOUNT_MANAGER_LOG_FILE`。 |
## 级别与内容建议
- **INFO**:子命令入口、成功结束(含关键业务 id避免仅打「成功」
- **WARNING**:可恢复问题、校验失败、登录未检测到。
- **ERROR**:依赖缺失、不可继续的异常。
- **DEBUG**高频轮询状态URL 列表、规则命中说明);默认关闭。
- 日志中可能含 **手机号、路径等敏感信息**,注意文件权限与留存策略;必要时仅记录后四位或 hash按合规要求
## 与标准输出的关系
- 面向用户的 `print`(成功提示、`ERROR:` 前缀)可保留;**诊断细节以日志为准**。
- 登录失败等场景可在终端提示日志文件路径,便于用户打开 `*.log`
## 参考实现
- `account-manager/scripts/main.py``get_skill_logs_dir``get_skill_logger``get_skill_log_file_path`、login 子进程内 `FileHandler` 追加同一文件。
新技能可复制上述函数结构,替换 `SKILL_SLUG``LOG_LOGGER_NAME` 即可。