diff --git a/utils/log/survey/logger.go b/utils/log/survey/logger.go index a89e155..ddd03a6 100644 --- a/utils/log/survey/logger.go +++ b/utils/log/survey/logger.go @@ -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 获取文件路径 diff --git a/utils/log/survey/options.go b/utils/log/survey/options.go index 5568301..ad33eb9 100644 --- a/utils/log/survey/options.go +++ b/utils/log/survey/options.go @@ -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 diff --git a/utils/log/survey/survey.go b/utils/log/survey/survey.go index f2fba71..72c20b0 100644 --- a/utils/log/survey/survey.go +++ b/utils/log/survey/survey.go @@ -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))