添加日志文件切分规则
This commit is contained in:
+29
-4
@@ -13,11 +13,36 @@ import (
|
|||||||
func (l *Logger) nowFileName(event string) string {
|
func (l *Logger) nowFileName(event string) string {
|
||||||
// ioc, _ := time.LoadLocation("Asia/Shanghai")
|
// 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().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 != "" {
|
prefix := ""
|
||||||
timeDir = l.channel + "/" + timeDir
|
|
||||||
|
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))
|
// fmt.Println(filepath.Abs(path))
|
||||||
return path
|
return path
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ func TestLogger(t *testing.T) {
|
|||||||
context.Background(),
|
context.Background(),
|
||||||
loggerx.SetErrorToInfo(),
|
loggerx.SetErrorToInfo(),
|
||||||
loggerx.SetExtraDriver(b, Print{}),
|
loggerx.SetExtraDriver(b, Print{}),
|
||||||
|
loggerx.SetFileSplit(loggerx.FileSplitTimeA),
|
||||||
)
|
)
|
||||||
|
|
||||||
l.Error(context.Background(), "test error")
|
l.Error(context.Background(), "test error")
|
||||||
|
|||||||
+26
-2
@@ -12,6 +12,8 @@ type loggerOption struct {
|
|||||||
errorToInfo bool // 错误日志是否写入info日志
|
errorToInfo bool // 错误日志是否写入info日志
|
||||||
days int // 日志保存天数
|
days int // 日志保存天数
|
||||||
drivers []io.Writer // 文件落盘驱动器
|
drivers []io.Writer // 文件落盘驱动器
|
||||||
|
fileSplit FileSplit // 文件切割规则
|
||||||
|
sizeSplit int // 根据文件大小切割
|
||||||
}
|
}
|
||||||
|
|
||||||
func defaultOptions() loggerOption {
|
func defaultOptions() loggerOption {
|
||||||
@@ -22,6 +24,7 @@ func defaultOptions() loggerOption {
|
|||||||
dir: "./log",
|
dir: "./log",
|
||||||
traceField: "trace_id",
|
traceField: "trace_id",
|
||||||
days: 7,
|
days: 7,
|
||||||
|
fileSplit: FileSplitTimeE,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,6 +112,27 @@ func SetExtraDriver(ds ...io.Writer) Option {
|
|||||||
// 3.时间B(年/月-日)
|
// 3.时间B(年/月-日)
|
||||||
// 4.时间C(年-月-日-时)
|
// 4.时间C(年-月-日-时)
|
||||||
// 5.时间D(年-月-日)
|
// 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user