package utils import ( "fmt" "os" "path/filepath" "time" ) type Logger struct { logFile *os.File } func NewLogger(logPath string) (*Logger, error) { // 确保日志目录存在 if err := os.MkdirAll(filepath.Dir(logPath), 0755); err != nil { return nil, err } // 打开日志文件 file, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) if err != nil { return nil, err } return &Logger{logFile: file}, nil } func (l *Logger) Info(format string, args ...interface{}) { l.log("INFO", format, args...) } func (l *Logger) Error(format string, args ...interface{}) { l.log("ERROR", format, args...) } func (l *Logger) Debug(format string, args ...interface{}) { l.log("DEBUG", format, args...) } func (l *Logger) log(level, format string, args ...interface{}) { timestamp := time.Now().Format("2006-01-02 15:04:05") message := fmt.Sprintf(format, args...) logLine := fmt.Sprintf("[%s] [%s] %s\n", timestamp, level, message) l.logFile.WriteString(logLine) } func (l *Logger) Close() error { return l.logFile.Close() }