package diary_test import ( "context" "log/slog" "os" "git.golem15.com/golem15/summercms/modules/diary" ) // blogLog is the component logger of a blog plugin, created once in a // package var block, before diary is set up. var blogLog = diary.For("blog") func ExampleFor() { // Before diary.Setup runs, records go to the process default logger. // This one drops the time so the output is stable. previous := slog.Default() defer slog.SetDefault(previous) slog.SetDefault(slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{ ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr { if len(groups) == 0 && a.Key == slog.TimeKey { return slog.Attr{} } return a }, }))) // After diary.Setup the same record reaches the configured channels and // passes log.components.blog, else log.level. blogLog.InfoContext(context.Background(), "post published", "id", 7) // Output: // level=INFO msg="post published" component=blog id=7 }