51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
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()
|
|
}
|