logger

package
v1.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ResultSuccess 表示成功执行 SQL 的结果标记
	ResultSuccess = "success"
)

Variables

This section is empty.

Functions

func NewLogger

func NewLogger(config Config, identityReader LogIdentityReader) loger.Interface

NewLogger 构造 GORM 日志实现,支持控制台与 OTel 输出,并保留显式注入的身份读取器。

Types

type Config

type Config struct {
	// Config 复用 gorm 内置 logger.Config(包含 SlowThreshold/LogLevel/Colorful 等)
	loger.Config

	// Console 只控制控制台输出,不关闭符合日志级别的 OTel SQL 日志。
	Console bool
	// Database 是 SQL 日志使用的数据库名称。
	Database string
	// DatabaseType 是与连接配置一致的数据库类型枚举。
	DatabaseType uint32
}

Config 为自定义 gorm logger 的配置

type LogIdentity added in v1.0.3

type LogIdentity struct {
	// UserId 是已验证的用户标识,没有用户上下文时为空。
	UserId string `json:"user_id"`
	// AppId 是用户登录应用,不是服务调用主体应用。
	AppId string `json:"app_id"`
	// TenantId 是用户上下文所属租户,不要求与服务主体租户一致。
	TenantId string `json:"tenant_id"`
	// ServiceAppId 来自当前服务的本地配置。
	ServiceAppId string `json:"service_app_id"`
	// ServiceInstanceId 来自当前服务实例的本地配置。
	ServiceInstanceId string `json:"service_instance_id"`
}

LogIdentity 是框架接入层提供的最小可信身份投影,不含 session、凭证或请求入口。 ORM 不负责验证身份,也不从原始 metadata 建立或补齐身份。

type LogIdentityReader added in v1.0.3

type LogIdentityReader func(context.Context) LogIdentity

LogIdentityReader 从 SQL 执行上下文读取框架已验证的身份,由消费方显式适配。 未提供读取器时身份保持为空,不回退到原始 token、请求头或 metadata。

type OperationLogger

type OperationLogger struct {
	// Database 是当前连接使用的数据库名称。
	Database string `json:"database"`
	// Statement 是 GORM 回调提供的 SQL 文本;绑定参数不展开,但不清理已拼入的字面量。
	Statement string `json:"statement"`
	// Result 保留成功标记、慢 SQL 提示或数据库错误原文,不统一替换为固定错误字符串。
	Result string `json:"result"`
	// Path 是调用栈定位的代码文件与行号,不是 HTTP 或 gRPC 入口路径。
	Path string `json:"path"`

	// Duration 是 SQL 执行耗时,单位为微秒。
	Duration uint64 `json:"duration"`

	// Level 使用既有数值约定:1 为信息、2 为警告、3 为错误,0 表示其他级别。
	Level uint32 `json:"level"`
	// Type 是数据库类型枚举,不是日志类型或请求主体类型。
	Type uint32 `json:"type"`

	// TraceId 来自执行 SQL 时上下文中的有效 OTel span。
	TraceId string `json:"trace_id"`
	// ParentId 沿用既有日志字段名,实际记录当前 span ID,不解析其父 span。
	ParentId string `json:"parent_id"`

	// UserId 是可信读取器提供的用户标识,无用户身份时为空。
	UserId string `json:"user_id"`
	// AppId 是用户登录应用,不表示当前服务或上一跳服务。
	AppId string `json:"app_id"`
	// TenantId 是用户租户,不从请求头或服务主体推断。
	TenantId string `json:"tenant_id"`

	// ServiceAppId 是框架接入层提供的本地服务应用标识。
	ServiceAppId string `json:"service_app_id"`
	// ServiceInstanceId 是框架接入层提供的本地服务实例标识。
	ServiceInstanceId string `json:"service_instance_id"`
}

OperationLogger 表示 SQL 操作日志,不复制完整请求上下文或身份凭证。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL