From 7fcb19ad490e69c653e15df598f115a92a3dcf2c Mon Sep 17 00:00:00 2001 From: Elijah Duffy Date: Wed, 28 Jan 2026 17:52:05 -0800 Subject: [PATCH] add start announcement --- applog.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/applog.go b/applog.go index 007c439..b27d723 100644 --- a/applog.go +++ b/applog.go @@ -44,6 +44,9 @@ type AppLogOpts struct { // for slog. Generally recommended to manage logger via app lifecycle // instead of relying on globals. SetDefault bool + + // Disables announcement of log module w/ log level on app start. + DisableAnnouncement bool } // Module creates a new Module instance. @@ -88,17 +91,29 @@ func setupLogger(lifecycle *app.Lifecycle, opts AppLogOpts) error { return err } - handlers = append(handlers, slog.NewJSONHandler(logfile, &slog.HandlerOptions{ + fileHandler := slog.NewJSONHandler(logfile, &slog.HandlerOptions{ Level: opts.FileLevel, - })) + }) + + if !opts.DisableAnnouncement { + slog.New(fileHandler).Info("Logger initialized", "level", opts.FileLevel.String(), "output", opts.FileOutput) + } + + handlers = append(handlers, fileHandler) } // If log output is specified, set up pretty-printed console logging if opts.ConsoleOutput != nil { - handlers = append(handlers, tint.NewHandler(opts.ConsoleOutput, &tint.Options{ + consoleHandler := tint.NewHandler(opts.ConsoleOutput, &tint.Options{ Level: opts.ConsoleLevel, TimeFormat: time.Kitchen, - })) + }) + + if !opts.DisableAnnouncement { + slog.New(consoleHandler).Info("Logger initialized", "level", opts.ConsoleLevel.String()) + } + + handlers = append(handlers, consoleHandler) } logger := slog.New(slogmulti.Fanout(handlers...))