Golang Telemetry - 如何解决无法找到相关数据的问题
Golang Telemetry - 如何解决无法找到相关数据的问题 大家好,
我已启用 Go 遥测功能,并且我的 Go 应用程序已经运行了一周,但我没有在 C:/Users/User_name/AppData/Roaming 或 C:/Users/<User>/go/telemetry 目录中看到任何生成的遥测数据。除了启用遥测之外,是否还需要其他操作,或者我找错了位置?
谢谢!
1 回复
更多关于Golang Telemetry - 如何解决无法找到相关数据的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在 Go 1.21+ 中,遥测数据默认存储在操作系统特定的目录中。对于 Windows 系统,正确的路径是:
// 默认存储位置示例
C:\Users\<username>\AppData\Local\go\telemetry
检查以下步骤来确认和解决问题:
1. 验证遥测是否已启用:
go env GOVERSION
# 确保版本 >= 1.21
go env GOTELEMETRY
# 应返回 "on" 或 "1"
2. 检查正确的存储目录:
// 通过代码验证存储位置
package main
import (
"fmt"
"os"
"path/filepath"
"runtime"
)
func main() {
var telemetryDir string
switch runtime.GOOS {
case "windows":
telemetryDir = filepath.Join(os.Getenv("LOCALAPPDATA"), "go", "telemetry")
case "darwin":
telemetryDir = filepath.Join(os.Getenv("HOME"), "Library", "Caches", "go", "telemetry")
case "linux":
telemetryDir = filepath.Join(os.Getenv("HOME"), ".cache", "go", "telemetry")
}
fmt.Printf("遥测目录: %s\n", telemetryDir)
// 检查目录是否存在
if _, err := os.Stat(telemetryDir); os.IsNotExist(err) {
fmt.Println("遥测目录不存在")
} else {
// 列出文件
files, _ := os.ReadDir(telemetryDir)
fmt.Printf("找到 %d 个遥测文件:\n", len(files))
for _, f := range files {
fmt.Printf(" - %s\n", f.Name())
}
}
}
3. 强制生成遥测数据:
# 运行会触发遥测的命令
go version
go list -m all
go build ./...
4. 检查遥测配置:
# 查看所有相关环境变量
go env | findstr TELEMETRY
5. 手动检查文件:
# Windows PowerShell
Get-ChildItem -Path $env:LOCALAPPDATA\go\telemetry -Force -ErrorAction SilentlyContinue
# 或使用 dir 命令
dir %LOCALAPPDATA%\go\telemetry /a
如果仍然没有数据,可能是由于:
- 遥测数据上传后被自动删除(默认行为)
- 网络策略阻止遥测上传
- 文件系统权限问题
可以通过设置环境变量保留本地副本:
set GOTELEMETRY=local
go version # 这会生成并保留本地遥测文件
然后检查 %LOCALAPPDATA%\go\telemetry\local 目录。

