57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
|
|
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...))
|
||
|
|
}
|
||
|
|
}
|