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...))