环境与调试
诊断标志
当你需要调试某个特定子系统(比如 Telegram HTTP 请求)时,不想开启全局详细日志怎么办?诊断标志(diagnostics flags)让你可以精准地为指定模块开启调试日志,而不会淹没其他无关信息。标志默认关闭,只有在对应子系统检查时才会生效。
工作原理
- 标志是字符串,不区分大小写
- 可通过配置文件或环境变量启用
- 支持通配符匹配:
telegram.*会匹配telegram.http*表示启用所有标志
通过配置启用
在配置文件中添加:
{
"diagnostics": {
"flags": ["telegram.http"]
}
}
启用多个标志:
{
"diagnostics": {
"flags": ["telegram.http", "gateway.*"]
}
}
修改后需要重启网关才能生效。
环境变量覆盖(临时调试)
临时启用标志,无需修改配置文件:
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload
禁用所有标志:
OPENCLAW_DIAGNOSTICS=0
日志输出位置
标志产生的日志会写入标准诊断日志文件,默认路径为:
/tmp/openclaw/openclaw-YYYY-MM-DD.log
如果你设置了 logging.file,则以该路径为准。日志采用 JSONL 格式(每行一个 JSON 对象),敏感信息脱敏规则(logging.redactSensitive)依然生效。
提取日志
找到最新的日志文件:
ls -t /tmp/openclaw/openclaw-*.log | head -n 1
过滤 Telegram HTTP 相关的诊断日志:
rg "telegram http error" /tmp/openclaw/openclaw-*.log
或者在复现问题时实时查看:
tail -f /tmp/openclaw/openclaw-$(date +%F).log | rg "telegram http error"
如果是远程网关,可以使用 openclaw logs --follow 命令(详见 /cli/logs)。
注意事项
- 如果
logging.level设置为高于warn的级别,这些日志可能会被过滤掉。默认的info级别没有问题 - 标志可以长期启用,它们只会增加指定子系统的日志量,不会影响其他功能
- 如需修改日志目标路径、级别或脱敏规则,请参考 /logging