From 96c3c4c3294dd74c8d618c6d6f43b37ca0f7c205 Mon Sep 17 00:00:00 2001 From: "DESKT-DMCDGMMAS\\Administrator" <995116474@qq.com> Date: Wed, 8 May 2024 16:33:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=88=87=E5=88=86=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filePath.go | 33 +++++++++++++++++++++++++++++---- loggerx_test.go | 1 + options.go | 28 ++++++++++++++++++++++++++-- 3 files changed, 56 insertions(+), 6 deletions(-) diff --git a/filePath.go b/filePath.go index ec0adc6..2bb7678 100644 --- a/filePath.go +++ b/filePath.go @@ -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 } diff --git a/loggerx_test.go b/loggerx_test.go index 8ec371b..403a78d 100644 --- a/loggerx_test.go +++ b/loggerx_test.go @@ -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") diff --git a/options.go b/options.go index b994146..bb26173 100644 --- a/options.go +++ b/options.go @@ -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 + } +}