syslog日志路径 添加windows目录支持

This commit is contained in:
殷勇 2023-08-28 13:12:45 +08:00
parent 0463bb48fc
commit 28e2d3ea05

View File

@ -1,37 +1,41 @@
package f5 package f5
import ( import (
"os"
"sync"
"time"
"fmt" "fmt"
"os"
"q5" "q5"
"runtime"
"sync"
"time"
) )
const ( const (
LOG_DEBUG = 0 LOG_DEBUG = 0
LOG_INFO = iota LOG_INFO = iota
LOG_NOTICE = iota LOG_NOTICE = iota
LOG_WARNING = iota LOG_WARNING = iota
LOG_ERROR = iota LOG_ERROR = iota
LOG_ALERT = iota LOG_ALERT = iota
LOG_EMERGENCY = iota LOG_EMERGENCY = iota
) )
const SYS_LOG_ROOT = "/data/logs/%s/logs/" const (
const SYS_LOG_FILENAME = "log_%d_%s.log" SYS_LOG_ROOT_LINUX = "/data/logs/%s/logs/"
SYS_LOG_ROOT_WINDOWS = "d:/linux_root/data/logs/%s/logs/"
SYS_LOG_FILENAME = "log_%d_%s.log"
)
type LogMsgNode struct { type LogMsgNode struct {
category int32 category int32
logMsg string logMsg string
next *LogMsgNode next *LogMsgNode
} }
type SysLog_ struct { type SysLog_ struct {
logLevel int32 logLevel int32
topNode *LogMsgNode topNode *LogMsgNode
botNode *LogMsgNode botNode *LogMsgNode
msgMutex sync.Mutex msgMutex sync.Mutex
chGoSaveExit chan int chGoSaveExit chan int
} }
@ -128,10 +132,10 @@ func (this *SysLog_) goSaveToFile() {
this.botNode = nil this.botNode = nil
this.msgMutex.Unlock() this.msgMutex.Unlock()
if workNode != nil { if workNode != nil {
logDir := fmt.Sprintf(SYS_LOG_ROOT, GetApp().GetPkgName()) logDir := this.GetLogDir()
fileName := fmt.Sprintf(TGLOG_FILENAME, os.Getpid(), time.Now().Format("20060102")) fileName := fmt.Sprintf(TGLOG_FILENAME, os.Getpid(), time.Now().Format("20060102"))
q5.ForceCreateDir(logDir) q5.ForceCreateDir(logDir)
if f, err := os.OpenFile(logDir + fileName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666); err == nil { if f, err := os.OpenFile(logDir+fileName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666); err == nil {
for workNode != nil { for workNode != nil {
f.Write([]byte(workNode.logMsg)) f.Write([]byte(workNode.logMsg))
workNode = workNode.next workNode = workNode.next
@ -143,3 +147,12 @@ func (this *SysLog_) goSaveToFile() {
} }
} }
} }
func (this *SysLog_) GetLogDir() string {
pkgName := GetApp().GetPkgName()
var logDir string = fmt.Sprintf(SYS_LOG_ROOT_LINUX, pkgName)
if runtime.GOOS == "windows" {
logDir = fmt.Sprintf(SYS_LOG_ROOT_WINDOWS, pkgName)
}
return logDir
}