excel-export/pkg/log.go

155 lines
3.6 KiB
Go
Raw Permalink 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 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
}