Files
qiweimanager-master/helper/log.go

73 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package main
import (
"fmt"
"log"
"os"
"path/filepath"
"strings"
"time"
"qiweimanager/logger"
)
// initLogger 初始化日志记录器
func initLogger() {
// 创建一个临时的控制台日志器作为备用
consoleLogger := log.New(os.Stderr, "[辅助程序] ", log.LstdFlags)
consoleLogger.Println("开始初始化日志系统...")
// 获取程序路径
exePath, err := os.Executable()
if err != nil {
consoleLogger.Printf("获取程序路径失败: %v使用默认路径", err)
exePath = "helper.exe"
}
exeDir := filepath.Dir(exePath)
consoleLogger.Printf("程序目录: %s", exeDir)
// 创建日志目录
logDir := filepath.Join(exeDir, "Log")
err = os.MkdirAll(logDir, 0755)
if err != nil {
consoleLogger.Printf("创建日志目录失败: %v使用系统临时目录", err)
logDir = os.TempDir()
}
consoleLogger.Printf("日志目录: %s", logDir)
// 初始化日志记录器,使用详细配置
var loggerErr error
// 正确传递程序名称而不是日志目录
appName := "helper"
// 确保appName不包含任何路径分隔符
safeAppName := strings.ReplaceAll(appName, "\\", "_")
safeAppName = strings.ReplaceAll(safeAppName, "/", "_")
// 设置日志级别为Error仅记录错误日志信息
globalLogger, loggerErr = logger.NewLogger(safeAppName, true, logger.LevelDebug)
if loggerErr != nil {
consoleLogger.Printf("初始化日志记录器失败: %v", loggerErr)
// 如果初始化失败,创建一个简单的文件日志器
logFileName := filepath.Join(logDir, fmt.Sprintf("helper_%d.log", time.Now().Unix()))
logFile, fileErr := os.OpenFile(logFileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if fileErr != nil {
consoleLogger.Printf("创建备用日志文件失败: %v", fileErr)
} else {
consoleLogger.Printf("创建备用日志文件: %s", logFileName)
globalLogger = &logger.Logger{
Logger: log.New(logFile, "[辅助程序] ", log.LstdFlags),
LogLevel: logger.LevelDebug,
LogEnabled: true,
}
}
} else {
consoleLogger.Println("日志记录器初始化成功")
}
// 启动日志清理调度器每天清理超过30天的旧日志
/* if globalLogger != nil {
logDir := globalLogger.GetLogDir()
consoleLogger.Printf("启动日志清理调度器,日志目录: %s", logDir)
logger.StartLogCleanupScheduler(logDir, 30, 24*time.Hour)
} */
}