From ad5884804c819ea43ecd2c7a3e79b13b144ae28d Mon Sep 17 00:00:00 2001 From: mogumc Date: Wed, 27 May 2026 20:30:22 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E7=A7=BB=E9=99=A4=E6=9C=AA=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E6=97=A5=E5=BF=97=E5=92=8C=E4=B8=B4=E6=97=B6?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logger/logger.go | 168 ----------------------------------------------- service/temp.go | 67 ------------------- 2 files changed, 235 deletions(-) delete mode 100644 logger/logger.go delete mode 100644 service/temp.go diff --git a/logger/logger.go b/logger/logger.go deleted file mode 100644 index 5bc398e..0000000 --- a/logger/logger.go +++ /dev/null @@ -1,168 +0,0 @@ -package logger - -import ( - "bytes" - "fmt" - "os" - "path" - "path/filepath" - "sort" - "strings" - "time" - - "github.com/sirupsen/logrus" -) - -var Log *logrus.Logger - -// ANSI 颜色代码 -const ( - red = 31 - yellow = 33 - blue = 36 - gray = 37 -) - -// LogFormatter 自定义日志格式化器 -type LogFormatter struct{} - -func (f *LogFormatter) Format(entry *logrus.Entry) ([]byte, error) { - var levelColor int - switch entry.Level { - case logrus.DebugLevel, logrus.TraceLevel: - levelColor = gray - case logrus.WarnLevel: - levelColor = yellow - case logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel: - levelColor = red - default: - levelColor = blue - } - - var b *bytes.Buffer - if entry.Buffer != nil { - b = entry.Buffer - } else { - b = &bytes.Buffer{} - } - - timestamp := entry.Time.Format("2006/01/02 15:04:05") - if entry.HasCaller() { - funcVal := entry.Caller.Function - fileVal := fmt.Sprintf("%s:%d", path.Base(entry.Caller.File), entry.Caller.Line) - fmt.Fprintf(b, "%s[%s] \033[%dm[%s]\033[0m %s %s: %s\n", - "[Logger]", timestamp, levelColor, entry.Level, funcVal, fileVal, entry.Message) - } else { - fmt.Fprintf(b, "%s[%s] \033[%dm[%s]\033[0m %s\n", - "[Logger]", timestamp, levelColor, entry.Level, entry.Message) - } - return b.Bytes(), nil -} - -// FileFormatter 文件日志格式化器(不包含 ANSI 颜色代码) -type FileFormatter struct{} - -func (f *FileFormatter) Format(entry *logrus.Entry) ([]byte, error) { - var b *bytes.Buffer - if entry.Buffer != nil { - b = entry.Buffer - } else { - b = &bytes.Buffer{} - } - - timestamp := entry.Time.Format("2006/01/02 15:04:05") - if entry.HasCaller() { - funcVal := entry.Caller.Function - fileVal := fmt.Sprintf("%s:%d", path.Base(entry.Caller.File), entry.Caller.Line) - fmt.Fprintf(b, "%s[%s] [%s] %s %s: %s\n", - "[Logger]", timestamp, entry.Level, funcVal, fileVal, entry.Message) - } else { - fmt.Fprintf(b, "%s[%s] [%s] %s\n", - "[Logger]", timestamp, entry.Level, entry.Message) - } - return b.Bytes(), nil -} - -// InitLogger 初始化日志系统 -// 每次运行时按照启动时间保存日志文件,并自动删除最新十个日志之前的日志 -func InitLogger() { - Log = logrus.New() - Log.SetReportCaller(true) - Log.SetFormatter(&LogFormatter{}) - Log.SetLevel(logrus.DebugLevel) - - // 确保日志目录存在 - logDir := "logs" - if err := os.MkdirAll(logDir, 0755); err != nil { - Log.Warnf("无法创建日志目录: %v", err) - } - - // 清理旧日志(保留最新10个) - cleanOldLogs(logDir, 10) - - // 创建按启动时间命名的日志文件 - startTime := time.Now().Format("2006-01-02_15-04-05") - logFile := filepath.Join(logDir, startTime+".log") - file, err := os.OpenFile(logFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) - if err != nil { - Log.Warnf("无法打开日志文件: %v", err) - } else { - // 控制台输出使用带颜色的格式 - Log.SetOutput(os.Stdout) - - // 文件输出使用无颜色的格式,通过 Hook 实现 - Log.AddHook(&FileHook{file: file}) - } -} - -// FileHook 将日志同时写入文件的 Hook -type FileHook struct { - file *os.File -} - -func (h *FileHook) Levels() []logrus.Level { - return logrus.AllLevels -} - -func (h *FileHook) Fire(entry *logrus.Entry) error { - formatter := &FileFormatter{} - line, err := formatter.Format(entry) - if err != nil { - return err - } - _, err = h.file.Write(line) - return err -} - -// cleanOldLogs 清理旧日志文件,保留最新的 maxKeep 个日志 -func cleanOldLogs(logDir string, maxKeep int) { - entries, err := os.ReadDir(logDir) - if err != nil { - return - } - - // 收集所有 .log 文件 - var logFiles []os.DirEntry - for _, entry := range entries { - if !entry.IsDir() && strings.HasSuffix(entry.Name(), ".log") { - logFiles = append(logFiles, entry) - } - } - - // 如果日志文件数量未超过限制,无需清理 - if len(logFiles) <= maxKeep { - return - } - - // 按文件名排序(文件名包含时间戳,排序即按时间排序) - sort.Slice(logFiles, func(i, j int) bool { - return logFiles[i].Name() < logFiles[j].Name() - }) - - // 删除超出限制的旧日志 - filesToDelete := logFiles[:len(logFiles)-maxKeep] - for _, file := range filesToDelete { - filePath := filepath.Join(logDir, file.Name()) - os.Remove(filePath) - } -} diff --git a/service/temp.go b/service/temp.go deleted file mode 100644 index 723538c..0000000 --- a/service/temp.go +++ /dev/null @@ -1,67 +0,0 @@ -package service - -import ( - "encoding/json" - "fmt" - "time" - - "github.com/wailsapp/wails/v2/pkg/runtime" -) - -func greet(name string) string { - return fmt.Sprintf("Hello %s, It's show time!", name) -} - -func flashtime(a *App) { - go func() { - for { - now := time.Now().Format(time.DateTime) - runtime.EventsEmit(a.ctx, "time", now) - time.Sleep(time.Second) - } - }() -} - -func getJSONString() string { - datas := map[string]interface{}{ - "code": 200, - "message": "ok", - "data": []map[string]interface{}{ - { - "id": 1, - "name": "apps", - "isdir": true, - "size": 0, - }, - { - "id": 2, - "name": "docs", - "isdir": true, - "size": 0, - }, - { - "id": 3, - "name": "readme.txt", - "isdir": false, - "size": 2048, - }, - }, - } - - jsonBytes, err := json.Marshal(datas) - if err != nil { - return "{}" - } - - return string(jsonBytes) -} - -type SystemInfo struct { - OS string `json:"os"` - Arch string `json:"arch"` - NumCPU int `json:"num_cpu"` - Hostname string `json:"hostname"` - GoVer string `json:"go_ver"` - Time string `json:"time"` - ProcessName string `json:"process_name"` -}