Documentation
¶
Overview ¶
ctx.go — Ctx 系日志门面:业务排障日志带 trace_id 的一等入口。
痛点(可观测评估 2026-10-16):app 层业务日志 48 处 0 trace_id,排障只能靠 accesslog 兜。trace_id 写入点在 pkg/middleware.RequestID(ctx key CtxKeyTraceID),但 middleware 已依赖 logger(accesslog/ratelimit/recovery), logger 不能反向 import——故 ctx key 真相源下沉本包,middleware 以类型别名 复用(Go 类型同一性保证 WithValue/Value 配对,既有写入零迁移)。
ring.go 进程内日志环形缓冲(管理端「系统日志」页的真实数据源)。
此前 admin.GetSystemLogs 是返回模拟数据的 TODO 桩——管理面板展示虚构日志。 现将环形缓冲实现为 zapcore.Core 并在 Init 时 Tee 进主日志链:零额外调用 面(业务代码照常 logger.Info/Warn/Error),容量有界(满载丢最旧), 不持久化、重启即清(定位是"最近运行日志"面板,非审计存储——审计在 admin 域的 operation_logs 表)。
Index ¶
- Variables
- func CtxError(ctx context.Context, msg string, kv ...any)
- func CtxInfo(ctx context.Context, msg string, kv ...any)
- func CtxWarn(ctx context.Context, msg string, kv ...any)
- func Debug(msg string, fields ...zap.Field)
- func Error(msg string, fields ...zap.Field)
- func Fatal(msg string, fields ...zap.Field)
- func Info(msg string, fields ...zap.Field)
- func Init(cfg *Config) error
- func Sync()
- func TraceIDFromContext(ctx context.Context) string
- func Warn(msg string, fields ...zap.Field)
- func With(fields ...zap.Field) *zap.Logger
- type Config
- type CtxKeyTraceID
- type RingEntry
Constants ¶
This section is empty.
Variables ¶
var Logger *zap.Logger
Functions ¶
func CtxInfo ¶ added in v0.24.0
CtxInfo / CtxWarn / CtxError:排障日志入口——ctx 里带 trace_id(请求链路) 时自动附 trace_id 字段,与访问日志 / 响应包络同一真相源;无链路 ctx 的 调用点行为退化为普通 Info/Warn/Error。caller 归因与 Debug/Info 等门面 同深(facade 体直呼 zap,Init 的 AddCallerSkip(1) 同样生效)。
func TraceIDFromContext ¶ added in v0.24.0
TraceIDFromContext 从 context.Context 提取 trace_id,无则空串。
Types ¶
type CtxKeyTraceID ¶ added in v0.24.0
type CtxKeyTraceID struct{}
CtxKeyTraceID context.Context 中 trace_id 的键(全仓唯一真相源; pkg/middleware 经类型别名 `CtxKeyTraceID = logger.CtxKeyTraceID` 复用)。