添加日志文件切分规则

This commit is contained in:
DESKT-DMCDGMMAS\Administrator
2024-05-08 16:33:58 +08:00
parent 328dadb308
commit 96c3c4c329
3 changed files with 56 additions and 6 deletions
+29 -4
View File
@@ -13,11 +13,36 @@ import (
func (l *Logger) nowFileName(event string) string {
// ioc, _ := time.LoadLocation("Asia/Shanghai")
// timeDir := fmt.Sprint(time.Now().In(ioc).Format("2006/01/02/15")) // 2006-01-02 15:04:05
timeDir := fmt.Sprint(time.Now().Local().Format("2006/01/02")) // 2006-01-02 15:04:05
if l.channel != "" {
timeDir = l.channel + "/" + timeDir
prefix := ""
switch l.option.fileSplit {
case FileSplitTimeA:
// (年/月/日/时)
prefix = fmt.Sprint(time.Now().Local().Format("2006/01/02/15")) // 2006-01-02 15:04:05
case FileSplitTimeB:
// (年/月/日)
prefix = fmt.Sprint(time.Now().Local().Format("2006/01/02")) // 2006-01-02 15:04:05
case FileSplitTimeC:
// (年/月-日)
prefix = fmt.Sprint(time.Now().Local().Format("2006/01-02")) // 2006-01-02 15:04:05
case FileSplitTimeD:
// (年-月-日-时)
prefix = fmt.Sprint(time.Now().Local().Format("2006-01-02-15")) // 2006-01-02 15:04:05
case FileSplitTimeE:
// (年-月-日)
prefix = fmt.Sprint(time.Now().Local().Format("2006-01-02")) // 2006-01-02 15:04:05
}
path := l.option.dir + "/" + timeDir + "_" + event + ".log"
if prefix != "" {
prefix = prefix + "_"
}
// timeDir := fmt.Sprint(time.Now().Local().Format("2006/01/02")) // 2006-01-02 15:04:05
if l.channel != "" {
prefix = l.channel + "/" + prefix
}
path := l.option.dir + "/" + prefix + event + ".log"
// fmt.Println(filepath.Abs(path))
return path
}
+1
View File
@@ -21,6 +21,7 @@ func TestLogger(t *testing.T) {
context.Background(),
loggerx.SetErrorToInfo(),
loggerx.SetExtraDriver(b, Print{}),
loggerx.SetFileSplit(loggerx.FileSplitTimeA),
)
l.Error(context.Background(), "test error")
+26 -2
View File
@@ -12,6 +12,8 @@ type loggerOption struct {
errorToInfo bool // 错误日志是否写入info日志
days int // 日志保存天数
drivers []io.Writer // 文件落盘驱动器
fileSplit FileSplit // 文件切割规则
sizeSplit int // 根据文件大小切割
}
func defaultOptions() loggerOption {
@@ -22,6 +24,7 @@ func defaultOptions() loggerOption {
dir: "./log",
traceField: "trace_id",
days: 7,
fileSplit: FileSplitTimeE,
}
}
@@ -109,6 +112,27 @@ func SetExtraDriver(ds ...io.Writer) Option {
// 3.时间B(年/月-日)
// 4.时间C(年-月-日-时)
// 5.时间D(年-月-日)
// func SetFileSplit()
func SetFileSplit(split FileSplit) Option {
return func(o *loggerOption) {
o.fileSplit = split
}
}
//
type FileSplit string
const (
FileSplitNone FileSplit = "none" // 不切割
FileSplitTimeA FileSplit = "timeA" // (年/月/日/时)
FileSplitTimeB FileSplit = "timeB" // (年/月/日)
FileSplitTimeC FileSplit = "timeC" // (年/月-日)
FileSplitTimeD FileSplit = "timeD" // (年-月-日-时)
FileSplitTimeE FileSplit = "timeE" // (年-月-日)
)
// 根据文件大小切割(暂时未生效)
func SetSizeSplit(m int) Option {
return func(o *loggerOption) {
o.sizeSplit = m
}
}