From c72713582bcb23857219672f5dca694378895c6e Mon Sep 17 00:00:00 2001 From: guohao Date: Fri, 10 Jan 2020 18:23:49 +0800 Subject: [PATCH] fixbug daemon rotate --- filelog.go | 18 ++++++++++++++---- gokit.go | 5 ++++- gokit_test.go | 9 ++++----- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/filelog.go b/filelog.go index 865b433..edfba1c 100644 --- a/filelog.go +++ b/filelog.go @@ -72,16 +72,26 @@ func (w *mFileLogger) Close() error { return w.flush() } -func NewFileLogger(path, name string, flushInterval time.Duration, fileSplitSize uint64, bufferSize int) io.Writer { - writer := &mFileLogger{ +func NewFileLogger(path, name string, flushInterval time.Duration, fileSplitSize uint64, bufferSize int) (writer io.Writer, err error) { + writer = &mFileLogger{ filepath: path, name: name, flushInterval: flushInterval, fileSplitSize: fileSplitSize, bufferSize: bufferSize, + writer: &bufferWriter{ + logPath: path, + logName: name, + maxFileSize: fileSplitSize, + bufferSize: bufferSize, + }, } - go writer.flushDaemon() - return writer + err = writer.(*mFileLogger).writer.rotate(time.Now(), 0) + if err != nil { + return + } + go writer.(*mFileLogger).flushDaemon() + return } func (w *mFileLogger) flushDaemon() { diff --git a/gokit.go b/gokit.go index 5a703ff..e284745 100644 --- a/gokit.go +++ b/gokit.go @@ -85,7 +85,10 @@ func Init(_channel Channel, name string, level Level, _alsoStdout bool, _withCal if logPath == "" { logPath = "/data/logs/" + logName + ".log" } - logWriter = NewFileLogger(logPath, logName, time.Second*5, 1204*1024*1800, 4*1024) + logWriter, err = NewFileLogger(logPath, logName, time.Second*5, 1204*1024*1800, 4*1024) + if err != nil { + return + } } if logWriter == nil && channel == SYSLOG { logWriter, _ = NewSyslogWriter("", "", level, logName) diff --git a/gokit_test.go b/gokit_test.go index 316ee5a..f7a2ae2 100644 --- a/gokit_test.go +++ b/gokit_test.go @@ -1,7 +1,6 @@ package logkit import ( - "flag" "fmt" "strconv" "testing" @@ -9,14 +8,14 @@ import ( ) func init() { - var l Level - flag.Int("level", int(l) , "l") - flag.Parse() + } func BenchmarkGoKit(b *testing.B) { defer Exit() - Init(FIlE, "test", LevelDebug, true, BasePath) + SetPath("/") + _, err := Init(FIlE, "test", LevelDebug, true, BasePath) + fmt.Printf("===%s", err) b.ResetTimer() for i := 0; i < b.N; i++ { Info("test " + strconv.FormatInt(int64(i), 10))