package pkg import ( "encoding/json" "fmt" "log" "os" "time" ) func ErrLog(errContent string) error { // 获取当前程序运行的路径 log.Printf(errContent) logFile, err := errLogFile() if err != nil { log.Fatal(err) } // 将错误信息写入日志文件 file, err := os.OpenFile(logFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { log.Fatal(err) } defer file.Close() _, err = file.WriteString(fmt.Sprintf("\n【%s】%s\n", time.Now().Format(time.DateTime), errContent)) if err != nil { log.Fatal(err) } return nil } func ProcessLog(processInfo string) error { // 获取当前程序运行的路径 log.Printf(processInfo) processPath, err := processLogFile() if err != nil { log.Fatal(err) } // 将错误信息写入日志文件 file, err := os.OpenFile(processPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { log.Fatal(err) } defer file.Close() _, err = file.WriteString(fmt.Sprintf("\n【%s】%s\n", time.Now().Format(time.DateTime), processInfo)) if err != nil { log.Fatal(err) } return nil } func MissionLog(adminIdStr string, sysName string, jobName string, taskIdStr string, excelName string, process int, timeStr string) error { // 获取当前程序运行的路径 missionPath, err := MissionLogFile(adminIdStr, sysName, jobName, taskIdStr) if err != nil { log.Fatal(err) } // 将错误信息写入日志文件 file, err := os.OpenFile(missionPath, os.O_RDWR|os.O_TRUNC|os.O_CREATE, 0766) if err != nil { log.Fatal(err) } defer file.Close() bytes, _ := os.ReadFile(missionPath) var info OrderExportData _ = json.Unmarshal(bytes, &info) status := 0 if process == 100 { status = 1 } nameMap := map[string]interface{}{ "process": process, "file_name": excelName, "status": status, } if timeStr == "" { nameMap["time"] = info.Time } else { nameMap["time"] = timeStr } processInfo, err := json.Marshal(nameMap) jsonInfo := string(processInfo) _, err = file.WriteString(jsonInfo) if err != nil { log.Fatal(err) } return nil } func MissionLogFile(adminIdStr string, sysName string, jobName string, taskIdStr string) (string, error) { path, err := MissionLogPath(adminIdStr, sysName, jobName) if err != nil { return "", err } return fmt.Sprintf("%s/%s", path, taskIdStr), nil } func MissionLogPath(adminIdStr string, sysName string, jobName string) (string, error) { logPath, err := runtimePath() if err != nil { return "", err } path := fmt.Sprintf("%s/%s/%s/%s", logPath, sysName, jobName, adminIdStr) err = CheckDir(path) if err != nil { return "", err } return path, nil } func errLogFile() (string, error) { logPath, err := runtimePath() if err != nil { return "", err } path := fmt.Sprintf("%s/%s", logPath, "err") err = CheckDir(path) if err != nil { return "", err } return fmt.Sprintf("%s/%s", path, time.Now().Format(time.DateOnly)), nil } func processLogFile() (string, error) { logPath, err := runtimePath() if err != nil { return "", err } path := fmt.Sprintf("%s/%s", logPath, "process") err = CheckDir(path) if err != nil { return "", err } return fmt.Sprintf("%s/%s", path, time.Now().Format(time.DateOnly)), nil } func runtimePath() (string, error) { path, err := os.Getwd() return fmt.Sprintf("%s/%s", path, "runtime"), err } func CheckDir(path string) error { // 判断目录是否存在 if _, err := os.Stat(path); os.IsNotExist(err) { // 如果目录不存在,则创建它 err = os.MkdirAll(path, os.ModePerm) if err != nil { return err } } else if err != nil { // 如果Stat返回了其他错误(比如权限问题) return err } return nil }