search and/or read your saved and liked bluesky posts
wails go svelte sqlite desktop bluesky
at main 132 lines 3.0 kB view raw
1package main 2 3import ( 4 "fmt" 5 "log" 6 "os" 7) 8 9// AppLogger provides application logging that writes to both file and Wails events 10type AppLogger struct { 11 stdLogger *log.Logger 12 service *LogService 13} 14 15var appLogger *AppLogger 16 17// InitLogger initializes the application logger with the log service 18func InitLogger(service *LogService) { 19 multiWriter := service.GetMultiWriter() 20 appLogger = &AppLogger{ 21 stdLogger: log.New(multiWriter, "", log.LstdFlags|log.Lshortfile), 22 service: service, 23 } 24 25 log.SetOutput(multiWriter) 26} 27 28// GetLogger returns the global app logger 29func GetLogger() *AppLogger { 30 if appLogger == nil { 31 return &AppLogger{ 32 stdLogger: log.New(os.Stdout, "", log.LstdFlags), 33 } 34 } 35 return appLogger 36} 37 38// Debug logs a debug message 39func (l *AppLogger) Debug(msg string) { 40 l.stdLogger.Printf("[DEBUG] %s", msg) 41} 42 43// Debugf logs a formatted debug message 44func (l *AppLogger) Debugf(format string, args ...interface{}) { 45 l.stdLogger.Printf("[DEBUG] "+format, args...) 46} 47 48// Info logs an info message 49func (l *AppLogger) Info(msg string) { 50 l.stdLogger.Printf("[INFO] %s", msg) 51} 52 53// Infof logs a formatted info message 54func (l *AppLogger) Infof(format string, args ...interface{}) { 55 l.stdLogger.Printf("[INFO] "+format, args...) 56} 57 58// Warn logs a warning message 59func (l *AppLogger) Warn(msg string) { 60 l.stdLogger.Printf("[WARN] %s", msg) 61} 62 63// Warnf logs a formatted warning message 64func (l *AppLogger) Warnf(format string, args ...interface{}) { 65 l.stdLogger.Printf("[WARN] "+format, args...) 66} 67 68// Error logs an error message 69func (l *AppLogger) Error(msg string) { 70 l.stdLogger.Printf("[ERROR] %s", msg) 71} 72 73// Errorf logs a formatted error message 74func (l *AppLogger) Errorf(format string, args ...interface{}) { 75 l.stdLogger.Printf("[ERROR] "+format, args...) 76} 77 78// Fatal logs a fatal message and exits 79func (l *AppLogger) Fatal(msg string) { 80 l.stdLogger.Fatalf("[FATAL] %s", msg) 81} 82 83// Fatalf logs a formatted fatal message and exits 84func (l *AppLogger) Fatalf(format string, args ...interface{}) { 85 l.stdLogger.Fatalf("[FATAL] "+format, args...) 86} 87 88// Convenience functions that use the global logger 89func LogDebug(msg string) { 90 GetLogger().Debug(msg) 91} 92 93func LogDebugf(format string, args ...interface{}) { 94 GetLogger().Debugf(format, args...) 95} 96 97func LogInfo(msg string) { 98 GetLogger().Info(msg) 99} 100 101func LogInfof(format string, args ...interface{}) { 102 GetLogger().Infof(format, args...) 103} 104 105func LogWarn(msg string) { 106 GetLogger().Warn(msg) 107} 108 109func LogWarnf(format string, args ...interface{}) { 110 GetLogger().Warnf(format, args...) 111} 112 113func LogError(msg string) { 114 GetLogger().Error(msg) 115} 116 117func LogErrorf(format string, args ...interface{}) { 118 GetLogger().Errorf(format, args...) 119} 120 121func LogFatal(msg string) { 122 GetLogger().Fatal(msg) 123} 124 125func LogFatalf(format string, args ...interface{}) { 126 GetLogger().Fatalf(format, args...) 127} 128 129// String returns a string representation of the logger 130func (l *AppLogger) String() string { 131 return fmt.Sprintf("AppLogger{initialized: %v}", l.service != nil) 132}