fix filelogger bug

master v0.1.5
infra-bot 5 years ago
parent 2c8309a602
commit 7ac7bb2e44
  1. 26
      filelog.go

@ -79,12 +79,6 @@ func NewFileLogger(path, name string, flushInterval time.Duration, fileSplitSize
flushInterval: flushInterval, flushInterval: flushInterval,
fileSplitSize: fileSplitSize, fileSplitSize: fileSplitSize,
bufferSize: bufferSize, bufferSize: bufferSize,
writer: &bufferWriter{
logPath: path,
logName: name,
maxFileSize: fileSplitSize,
bufferSize: bufferSize,
},
} }
go writer.flushDaemon() go writer.flushDaemon()
return writer return writer
@ -97,6 +91,9 @@ func (w *mFileLogger) flushDaemon() {
} }
func (w *mFileLogger) flush() (err error) { func (w *mFileLogger) flush() (err error) {
if w.writer == nil {
return
}
err = w.writer.Flush() err = w.writer.Flush()
if err != nil { if err != nil {
return return
@ -112,12 +109,25 @@ func (w *mFileLogger) Write(msg []byte) (n int, err error) {
w.mu.Lock() w.mu.Lock()
defer w.mu.Unlock() defer w.mu.Unlock()
if err = w.writer.checkRotate(time.Now()); err != nil { writer := w.writer
if writer == nil {
w.writer = &bufferWriter{
logPath: w.filepath,
logName: w.name,
maxFileSize: w.fileSplitSize,
bufferSize: w.bufferSize,
}
writer = w.writer
}
if err = writer.checkRotate(time.Now()); err != nil {
fmt.Println("[logkit] check rotate err: " + err.Error()) fmt.Println("[logkit] check rotate err: " + err.Error())
return return
} }
w.putBuffer(buf) w.putBuffer(buf)
return w.writer.Write(buf.Bytes()) return writer.Write(buf.Bytes())
} }
func (bufferW *bufferWriter) Write(p []byte) (int, error) { func (bufferW *bufferWriter) Write(p []byte) (int, error) {

Loading…
Cancel
Save