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