mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-11-06 01:07:35 +00:00
fix(log): 生产日志默认不再带源文件位置
## 现象
生产日志每行都带 `file.go:NNN`:
2026/10/31 18:47:03 bootstrap.go:320: [homed] shutting down...
2026/10/31 18:47:03 builtin_skill.go:163: [plugin] seq: removed skill ...
2026/10/31 18:47:03 sidecar.go:419: [clawhubadapter] sidecar manager stopped
来源是 `cmd/homed/bootstrap.go` 里无条件 `log.SetFlags(... | log.Lshortfile)`。
## 判断:生产确实不需要
- 多数日志**本身带模块前缀**(`[homed]` / `[plugin]` / `[kbtree]` / `[skillmgr]`),
去掉行号后定位能力并不缺
- `Lshortfile` 在**每一次** log 调用里做一次 `runtime.Caller`,不为零
- 它还不能真的消歧:它只打基名,26 个插件里有多个 `plugin.go`,
`plugin.go:104` 反而指不出是哪一个 —— 真正的消歧靠的是消息里的 `[插件名]` 前缀
## 改法
`logFlags()` 抽出来,默认 `Ldate|Ltime`;`HOMED_LOG_SOURCE=1`(或 true/yes/on)
时追加 `Lshortfile`。
保留开关而不是删掉:排查插件/装配问题时行号仍有用,部署方临时开一下即可。
用法写进 `docs/zh/deploy-runbook.md` §3.0。
## 判据
- `TestLogFlagsNoSourceByDefault`:默认不得有 Lshortfile,且日期时间必须保留
- `TestLogFlagsSourceOptIn`:开关的六种正向写法生效、四种关闭写法不误开
## 验证
go build ./... ✓
go vet ./cmd/homed/ ✓
go test ./cmd/homed/ ✓(含新增两条)
This commit is contained in:
@ -310,6 +310,34 @@ systemctl restart waiter-remote.service
|
||||
|
||||
## 3. 故障排查
|
||||
|
||||
### 3.0 日志里要不要源文件位置
|
||||
|
||||
默认**不带**。生产日志长这样:
|
||||
|
||||
```
|
||||
2026/10/31 18:47:03 [homed] shutting down...
|
||||
```
|
||||
|
||||
排查插件/装配问题时可以临时打开,加上 `file.go:NNN`:
|
||||
|
||||
```bash
|
||||
systemctl edit hologramagent # 或直接改 drop-in
|
||||
# [Service]
|
||||
# Environment=HOMED_LOG_SOURCE=1
|
||||
systemctl restart hologramagent
|
||||
```
|
||||
|
||||
打开后:
|
||||
|
||||
```
|
||||
2026/10/31 18:47:03 bootstrap.go:320: [homed] shutting down...
|
||||
```
|
||||
|
||||
为什么默认关:多数日志本身带模块前缀(`[homed]` / `[plugin]` / `[kbtree]`),
|
||||
定位能力并不缺;而 `Lshortfile` 每行都要多一次 `runtime.Caller`。
|
||||
保留开关是因为同名文件太多——每个插件都有自己的 `plugin.go`,
|
||||
只有行号能区分。
|
||||
|
||||
### 3.1 "消息发过去没反应"
|
||||
|
||||
按这个顺序查,**别跳步**:
|
||||
|
||||
Reference in New Issue
Block a user