bluesky viewer in the terminal
at main 1.4 kB view raw
1package utils 2 3import ( 4 "os" 5 6 "github.com/charmbracelet/lipgloss" 7 "github.com/charmbracelet/log" 8) 9 10var logger *log.Logger 11 12const ( 13 // Blue 14 ColorPrimary = "#31748f" 15 // Yellow/Gold 16 ColorAccent = "#f6c177" 17 // Red/Pink 18 ColorError = "#eb6f92" 19 // Light text 20 ColorText = "#e0def4" 21 // Dark background 22 ColorBG = "#191724" 23) 24 25// InitLogger initializes the global logger with structured logging 26func InitLogger(level log.Level) *log.Logger { 27 logger = log.NewWithOptions(os.Stderr, log.Options{ 28 ReportTimestamp: true, 29 TimeFormat: "15:04:05", 30 Level: level, 31 }) 32 33 styles := log.DefaultStyles() 34 35 styles.Levels[log.DebugLevel] = lipgloss.NewStyle().SetString("DEBUG").Foreground(lipgloss.Color(ColorText)) 36 styles.Levels[log.InfoLevel] = lipgloss.NewStyle().SetString("INFO").Foreground(lipgloss.Color(ColorPrimary)) 37 styles.Levels[log.WarnLevel] = lipgloss.NewStyle().SetString("WARN").Foreground(lipgloss.Color(ColorAccent)) 38 styles.Levels[log.ErrorLevel] = lipgloss.NewStyle().SetString("ERROR").Foreground(lipgloss.Color(ColorError)) 39 styles.Levels[log.FatalLevel] = lipgloss.NewStyle().SetString("FATAL").Foreground(lipgloss.Color(ColorError)).Bold(true) 40 41 logger.SetStyles(styles) 42 43 return logger 44} 45 46// GetLogger returns the global logger instance 47func GetLogger() *log.Logger { 48 if logger == nil { 49 return InitLogger(log.InfoLevel) 50 } 51 return logger 52}