feat: survey.Reg 支持每次写入就持久化的策略
This commit is contained in:
parent
2c67fe072f
commit
3fc282afab
|
@ -73,6 +73,9 @@ func (slf *logger) writer(d string) {
|
||||||
slf.bl.Lock()
|
slf.bl.Lock()
|
||||||
slf.bs = append(slf.bs, d)
|
slf.bs = append(slf.bs, d)
|
||||||
slf.bl.Unlock()
|
slf.bl.Unlock()
|
||||||
|
if slf.interval <= 0 {
|
||||||
|
slf.flush()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// filePath 获取文件路径
|
// filePath 获取文件路径
|
||||||
|
|
|
@ -15,7 +15,7 @@ func WithLayout(layout string) Option {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithFlushInterval 设置日志文件刷新间隔
|
// WithFlushInterval 设置日志文件刷新间隔
|
||||||
// - 默认为 3s
|
// - 默认为 3s,当日志文件刷新间隔 <= 0 时,将会在每次写入日志时刷新日志文件
|
||||||
func WithFlushInterval(interval time.Duration) Option {
|
func WithFlushInterval(interval time.Duration) Option {
|
||||||
return func(logger *logger) {
|
return func(logger *logger) {
|
||||||
logger.interval = interval
|
logger.interval = interval
|
||||||
|
|
|
@ -46,26 +46,28 @@ func Reg(name, filePath string, options ...Option) {
|
||||||
option(logger)
|
option(logger)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, exist = timers[logger.interval]
|
if logger.interval > 0 {
|
||||||
if !exist {
|
_, exist = timers[logger.interval]
|
||||||
t := time.NewTimer(logger.interval)
|
if !exist {
|
||||||
timers[logger.interval] = t
|
t := time.NewTimer(logger.interval)
|
||||||
timerSurvey[logger.interval] = make(map[string]struct{})
|
timers[logger.interval] = t
|
||||||
go func(interval time.Duration) {
|
timerSurvey[logger.interval] = make(map[string]struct{})
|
||||||
for {
|
go func(interval time.Duration) {
|
||||||
<-t.C
|
for {
|
||||||
timerSurveyLock.Lock()
|
<-t.C
|
||||||
for n := range timerSurvey[interval] {
|
timerSurveyLock.Lock()
|
||||||
survey[n].flush()
|
for n := range timerSurvey[interval] {
|
||||||
|
survey[n].flush()
|
||||||
|
}
|
||||||
|
timerSurveyLock.Unlock()
|
||||||
|
if !t.Reset(interval) {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
timerSurveyLock.Unlock()
|
}(logger.interval)
|
||||||
if !t.Reset(interval) {
|
}
|
||||||
break
|
timerSurvey[logger.interval][name] = struct{}{}
|
||||||
}
|
|
||||||
}
|
|
||||||
}(logger.interval)
|
|
||||||
}
|
}
|
||||||
timerSurvey[logger.interval][name] = struct{}{}
|
|
||||||
|
|
||||||
survey[name] = logger
|
survey[name] = logger
|
||||||
log.Info("Survey", log.String("Action", "Reg"), log.String("Name", name), log.String("FilePath", dir+"/"+fn+".${DATE}"+ext))
|
log.Info("Survey", log.String("Action", "Reg"), log.String("Name", name), log.String("FilePath", dir+"/"+fn+".${DATE}"+ext))
|
||||||
|
|
Loading…
Reference in New Issue