diff --git a/CHANGELOG.md b/CHANGELOG.md index 047d7a5..d8b3617 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## [1.1.1] - 2026-05-05 +## [1.1.2] - 2026-05-05 +- **架构解耦**: + - 正式移除 `log` 包对数据库日志(`DB` 方法及 `DBLog` 结构)的内置支持,推动“日志格式随业务走”的架构对齐。 + - 导出 `GetCallStacks` 方法,支持外部包捕获符合截断配置的调用栈。 +- **内部优化**: + - `fillBase` 回归私有,强化 `Log(entry)` 的自动填充契约,降低外部摩擦。 - **体验对齐**: - 修复 `viewer.go` 中空错误字符串导致日志类型被跳过显示的 Bug。 - `Log` 方法集成 `fillBase` 自动补全逻辑,对于直接调用 `Log(entry)` 的自定义日志类型,若未设置时间戳则自动填充元数据,无需手动干预。 diff --git a/extra.go b/extra.go index 70033dc..688f618 100644 --- a/extra.go +++ b/extra.go @@ -155,43 +155,3 @@ package log // logger.Log(entry) // } // } - -// type DBLog struct { -// BaseLog -// DbType string -// Dsn string -// Query string -// QueryArgs string -// UsedTime float32 -// Error string -// CallStacks []string -// } - -// func (logger *Logger) DB(dbType, dsn, query string, args []any, usedTime float32, err error, extra ...any) { -// logType := LogTypeDb -// level := INFO -// var e string -// if err != nil { -// logType = LogTypeDbError -// level = ERROR -// e = err.Error() -// } - -// if logger.CheckLevel(level) { -// entry := GetEntry[DBLog]() -// logger.fillBase(entry, logType) -// entry.DbType = dbType -// entry.Dsn = dsn -// entry.Query = query -// entry.QueryArgs = cast.To[string](args) -// entry.UsedTime = usedTime -// if e != "" { -// entry.Error = e -// entry.CallStacks = getCallStacks(logger.truncations) -// } -// if len(extra) > 0 { -// cast.FillMap(&entry.Extra, extra) -// } -// logger.Log(entry) -// } -// } diff --git a/go.mod b/go.mod index 23283aa..c499c88 100644 --- a/go.mod +++ b/go.mod @@ -11,13 +11,11 @@ require ( require ( apigo.cc/go/convert v1.0.4 // indirect apigo.cc/go/encoding v1.0.4 // indirect - apigo.cc/go/file v1.0.4 // indirect + apigo.cc/go/file v1.0.5 // indirect apigo.cc/go/rand v1.0.4 // indirect apigo.cc/go/safe v1.0.4 // indirect - github.com/kr/pretty v0.3.0 // indirect - github.com/rogpeppe/go-internal v1.14.1 // indirect + github.com/kr/text v0.2.0 // indirect golang.org/x/crypto v0.50.0 // indirect golang.org/x/sys v0.43.0 // indirect - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index aa0f06b..397c19d 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ apigo.cc/go/cast v1.2.6 h1:xnWiaQAGsRCrnu1p8fIFQfg5HFSc7CxR+3ItiDIDMaY= apigo.cc/go/cast v1.2.6/go.mod h1:lGlwImiOvHxG7buyMWhFzcdvQzmSaoKbmr7bcDfUpHk= -apigo.cc/go/config v1.0.4 h1:WG9zrQkqfFPkrKIL7RNvvAbbkuUBt1Av11ZP/aIfldM= -apigo.cc/go/config v1.0.4/go.mod h1:obryzJiK6j7lQex/58d5eWYOGx5O5IABguqNWxyyXJo= +apigo.cc/go/config v1.0.5 h1:dQ5sTKphHvxfHkr4FscNmm19ESGx7oVPxps9REoZcQ0= +apigo.cc/go/config v1.0.5/go.mod h1:gweaCzn1e4jpFR3IUe49QqQIYhixK7d9LZtNPDM8mwc= apigo.cc/go/convert v1.0.4 h1:5+qPjC3dlPB59GnWZRlmthxcaXQtKvN+iOuiLdJ1GvQ= apigo.cc/go/convert v1.0.4/go.mod h1:Hp+geeSyhqg/zwIKPOrDoceIREzcwM14t1I5q/dtbfU= apigo.cc/go/encoding v1.0.4 h1:aezB0J/qFuHs6iXkbtuJP5JIHUtmjsr5SFb0NNvbObY= @@ -15,15 +15,10 @@ apigo.cc/go/safe v1.0.4/go.mod h1:o568sHS5rTRSVPmhxWod0tGdc+8l1KjidsNY1/OVZr0= apigo.cc/go/shell v1.0.4 h1:EL9zjI39YBe1h+kRYQeAi/8zVGHe5W198DYYN7cENiY= apigo.cc/go/shell v1.0.4/go.mod h1:N2gDkgK4tJ9TadD60/+gAGuWxyVAWHs5YPBmytw6ELA= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= @@ -31,9 +26,7 @@ golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+ golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/logger.go b/logger.go index fbefcc8..9e4fdb8 100644 --- a/logger.go +++ b/logger.go @@ -217,6 +217,10 @@ func (logger *Logger) fillBase(entry LogEntry, logType string) { base.ServerIp = serverIp } +func (logger *Logger) GetCallStacks() []string { + return getCallStacks(logger.truncations) +} + func (logger *Logger) Debug(message string, extra ...any) { if logger.CheckLevel(DEBUG) { entry := GetEntry[DebugLog]()