问题:.gitignore 第 27 行的 `log/` 未锚定根目录,会匹配任意层级的 log 目录,把下面 4 个**源码包**一并忽略: - api/admin/base/log - api/admin/system/log - internal/service/admin/base/log - internal/service/admin/system/log 而引用它们的 internal/controller/admin/log.go 已在库中,于是 「已提交的代码 import 了不存在(未提交)的包」——干净检出后 `go build .` 直接失败: no required module provides package service.xpcool.com/api/admin/base/log 因为 service 仓库没有 CI 自动构建,这个问题一直没有暴露, 影响是:新克隆/新设备无法编译,任何干净检出构建都会失败。 修复: 1. 规则改为 `/log/`,只忽略仓库根目录下的运行日志输出目录 (config.dev.yaml 的 logger.path: "log"),不再误伤同名源码包; 2. 补交被忽略期间漏掉的 4 个 log 包,恢复 HEAD 完整可编译。
41 lines
1.6 KiB
Go
41 lines
1.6 KiB
Go
// Package admin_base_log 定义服务器日志监控接口契约。
|
||
//
|
||
// 路由前缀 /api/service/admin/base/log,对应 admin_menu 中的:
|
||
// - POST /api/service/admin/base/log/files —— monitor:log:view(查看日志文件列表)
|
||
// - POST /api/service/admin/base/log/tail —— monitor:log:tail(实时读取日志尾部)
|
||
package admin_base_log
|
||
|
||
import "github.com/gogf/gf/v2/frame/g"
|
||
|
||
// LogFile 描述一个服务器日志文件。
|
||
type LogFile struct {
|
||
Name string `json:"name"` // 文件名
|
||
Path string `json:"path"` // 文件绝对路径
|
||
Size int64 `json:"size"` // 文件大小(字节)
|
||
ModTime string `json:"modTime"` // 最后修改时间
|
||
}
|
||
|
||
// LogFilesReq 列出服务器日志文件。
|
||
type LogFilesReq struct {
|
||
g.Meta `path:"/base/log/files" method:"post" tags:"Admin/Base/Log" summary:"日志文件列表"`
|
||
}
|
||
|
||
// LogFilesRes 是 LogFilesReq 的响应。
|
||
type LogFilesRes struct {
|
||
Dir string `json:"dir"` // 日志目录
|
||
Files []*LogFile `json:"files"` // 文件列表
|
||
}
|
||
|
||
// LogTailReq 读取日志文件尾部,支持关键字过滤。
|
||
type LogTailReq struct {
|
||
g.Meta `path:"/base/log/tail" method:"post" tags:"Admin/Base/Log" summary:"读取日志尾部"`
|
||
File string `json:"file" v:"required#日志文件名不能为空"` // 日志文件名(不含目录)
|
||
Lines int `json:"lines" d:"200" v:"min:1|max:5000#行数必须在 1-5000 之间"`
|
||
Keyword string `json:"keyword"` // 关键字过滤,为空则不过滤
|
||
}
|
||
|
||
// LogTailRes 是 LogTailReq 的响应。
|
||
type LogTailRes struct {
|
||
Lines []string `json:"lines"` // 日志行
|
||
}
|