package logger import ( "fmt" "log" "os" "path/filepath" ) var ( infoLog *log.Logger errorLog *log.Logger debugLog *log.Logger ) func Init() error { home, err := os.UserHomeDir() if err != nil { home = "." } logDir := filepath.Join(home, ".config", "grokkit") if err := os.MkdirAll(logDir, 0755); err != nil { return fmt.Errorf("failed to create log directory: %w", err) } logFile := filepath.Join(logDir, "grokkit.log") file, err := os.OpenFile(logFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) if err != nil { return fmt.Errorf("failed to open log file: %w", err) } infoLog = log.New(file, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile) errorLog = log.New(file, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile) debugLog = log.New(file, "DEBUG: ", log.Ldate|log.Ltime|log.Lshortfile) return nil } func Info(format string, v ...interface{}) { if infoLog != nil { infoLog.Output(2, fmt.Sprintf(format, v...)) } } func Error(format string, v ...interface{}) { if errorLog != nil { errorLog.Output(2, fmt.Sprintf(format, v...)) } } func Debug(format string, v ...interface{}) { if debugLog != nil { debugLog.Output(2, fmt.Sprintf(format, v...)) } }