LicenseManger/internal/utils/logger.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()
}