1package log
2
3import (
4 "os"
5 "strconv"
6 "strings"
7 "time"
8
9 "github.com/charmbracelet/log"
10)
11
12var contextKey = &struct{ string }{"logger"}
13
14// NewDefaultLogger returns a new logger with default settings.
15func NewDefaultLogger() *log.Logger {
16 logger := log.NewWithOptions(os.Stderr, log.Options{
17 ReportTimestamp: true,
18 TimeFormat: time.DateOnly,
19 })
20
21 if debug, _ := strconv.ParseBool(os.Getenv("SOFT_SERVE_DEBUG")); debug {
22 logger.SetLevel(log.DebugLevel)
23 }
24
25 if tsfmt := os.Getenv("SOFT_SERVE_LOG_TIME_FORMAT"); tsfmt != "" {
26 logger.SetTimeFormat(tsfmt)
27 }
28
29 switch strings.ToLower(os.Getenv("SOFT_SERVE_LOG_FORMAT")) {
30 case "json":
31 logger.SetFormatter(log.JSONFormatter)
32 case "logfmt":
33 logger.SetFormatter(log.LogfmtFormatter)
34 case "text":
35 logger.SetFormatter(log.TextFormatter)
36 }
37
38 return logger
39}