From 7fcf4749ab8527bc88cc000d752860cd8aafe9c6 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 28 Jun 2023 16:34:11 +0200 Subject: [PATCH] logging: provide (and use) functions with context information --- app/app.go | 7 ++--- lib/action/action.go | 5 ++- logging/event.go | 72 ++++++++++++++++++++++++++++++++++++++++++-- testing/testing.go | 6 +++- 4 files changed, 79 insertions(+), 11 deletions(-) diff --git a/app/app.go b/app/app.go index 0c29787..a9b1db9 100644 --- a/app/app.go +++ b/app/app.go @@ -9,7 +9,6 @@ import ( "git.sr.ht/~cco/go-scopes/lib" "git.sr.ht/~cco/go-scopes/lib/message" "git.sr.ht/~cco/go-scopes/logging" - "git.sr.ht/~cco/go-scopes/logging/log" ) type Cfg struct { @@ -29,7 +28,7 @@ func start(ctx lib.Context) { cctx := ctx.ChildContext(cfg) cfg.Starter()(cctx) } - log.Info().Msg("app.start: running") + logging.Info(ctx).Msg("app.start: running") sig := make(chan os.Signal, 1) signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM) for step(ctx, sig) { @@ -39,12 +38,12 @@ func start(ctx lib.Context) { func step(ctx lib.Context, sig <-chan os.Signal) bool { select { case <-sig: - log.Info().Msg("app.step: interrupted") + logging.Info(ctx).Msg("app.step: interrupted") return false case msg := <-ctx.Mailbox(): //log.Debug().Str("msg.action", msg.Action()).Msg("app.step: message") if msg == message.Quit { - log.Info().Msg("app.step: stopped") + logging.Info(ctx).Msg("app.step: stopped") return false } return lib.HandleMsg(ctx, msg) diff --git a/lib/action/action.go b/lib/action/action.go index 6b2cfaa..682a764 100644 --- a/lib/action/action.go +++ b/lib/action/action.go @@ -3,7 +3,7 @@ package action import ( "git.sr.ht/~cco/go-scopes/lib" "git.sr.ht/~cco/go-scopes/lib/message" - "git.sr.ht/~cco/go-scopes/logging/log" + "git.sr.ht/~cco/go-scopes/logging" ) type BaseSpec = baseSpec @@ -33,6 +33,7 @@ func Select(ctx lib.Context, msg lib.Message) []lib.Action { if match(ac, msg) { for _, spec := range ac.Specs() { act := action{ctx, spec, msg} + logging.DebugA(&act).Str("pattern", ac.Pattern()).Msg("action.Select") acts = append(acts, &act) } } @@ -41,8 +42,6 @@ func Select(ctx lib.Context, msg lib.Message) []lib.Action { } func match(ac lib.ActionConfig, msg lib.Message) bool { - log.Debug().Str("pattern", ac.Pattern()).Str("msg.action", msg.Action()). - Msg("action.match") return ac.Pattern() == msg.Action() //return false } diff --git a/logging/event.go b/logging/event.go index 76c46ec..fc8f3d2 100644 --- a/logging/event.go +++ b/logging/event.go @@ -7,9 +7,7 @@ import ( type Evt = zerolog.Event -func Debug(ctx lib.Context) *Evt { - return WithContext(ctx, GetLogger(ctx).Debug()) -} +// logging with context information func WithContext(ctx lib.Context, e *Evt) *Evt { if e == nil || ctx == nil { @@ -17,3 +15,71 @@ func WithContext(ctx lib.Context, e *Evt) *Evt { } return e.Str("service", ctx.Config().Name()) } + +func Debug(ctx lib.Context) *Evt { + return WithContext(ctx, GetLogger(ctx).Debug()) +} + +func Info(ctx lib.Context) *Evt { + return WithContext(ctx, GetLogger(ctx).Info()) +} + +func Warn(ctx lib.Context) *Evt { + return WithContext(ctx, GetLogger(ctx).Warn()) +} + +func Error(ctx lib.Context) *Evt { + return WithContext(ctx, GetLogger(ctx).Error()) +} + +// logging for message handlers + +func WithMessage(ctx lib.Context, msg lib.Message, e *Evt) *Evt { + if e == nil { + return e + } + return WithContext(ctx, e).Str("action", msg.Action()) +} + +func DebugM(ctx lib.Context, msg lib.Message) *Evt { + return WithMessage(ctx, msg, GetLogger(ctx).Debug()) +} + +func InfoM(ctx lib.Context, msg lib.Message) *Evt { + return WithMessage(ctx, msg, GetLogger(ctx).Info()) +} + +func WarnM(ctx lib.Context, msg lib.Message) *Evt { + return WithMessage(ctx, msg, GetLogger(ctx).Warn()) +} + +func ErrorM(ctx lib.Context, msg lib.Message) *Evt { + return WithMessage(ctx, msg, GetLogger(ctx).Error()) +} + +// logging for action handlers + +func WithAction(act lib.Action, e *Evt) *Evt { + if e == nil { + return e + } + ctx := act.Context() + msg := act.Message() + return WithMessage(ctx, msg, e) +} + +func DebugA(act lib.Action) *Evt { + return WithAction(act, GetLogger(act.Context()).Debug()) +} + +func InfoA(act lib.Action) *Evt { + return WithAction(act, GetLogger(act.Context()).Info()) +} + +func WarnA(act lib.Action) *Evt { + return WithAction(act, GetLogger(act.Context()).Warn()) +} + +func ErrorA(act lib.Action) *Evt { + return WithAction(act, GetLogger(act.Context()).Error()) +} diff --git a/testing/testing.go b/testing/testing.go index dbc04ba..7b0c0d2 100644 --- a/testing/testing.go +++ b/testing/testing.go @@ -80,7 +80,11 @@ func (t *T) LogCount(pr bool) int { srv = data["service"].(string) delete(data, "service") } - fmt.Printf("%d: %s: %s - %s; %+v\n", count, level, srv, message, data) + dstr := "" + if len(data) > 0 { + dstr = fmt.Sprintf("; %+v", data) + } + fmt.Printf("%d: %s: %s - %s%s\n", count, level, srv, message, dstr) //fmt.Println(scanner.Text()) } }