grokkit/internal/logger/logger.go

57 lines
1.2 KiB
Go
Raw Normal View History

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...))
}
}