Added bufferlogger
This commit is contained in:
parent
4bf917bf81
commit
a2a60aa99f
|
@ -0,0 +1,44 @@
|
|||
package slog
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type BufferLogger struct {
|
||||
w io.Writer
|
||||
m sync.Mutex
|
||||
b bytes.Buffer
|
||||
silent bool
|
||||
}
|
||||
|
||||
func (b *BufferLogger) Write(p []byte) (n int, err error) {
|
||||
b.m.Lock()
|
||||
defer b.m.Unlock()
|
||||
|
||||
return b.w.Write(p)
|
||||
}
|
||||
|
||||
func (b *BufferLogger) FlushAll() {
|
||||
b.m.Lock()
|
||||
defer b.m.Unlock()
|
||||
|
||||
w := b.w.(*bufio.Writer)
|
||||
w.Flush()
|
||||
if !b.silent {
|
||||
fmt.Print(string(b.b.Bytes()))
|
||||
}
|
||||
b.b.Truncate(0)
|
||||
b.w = bufio.NewWriter(&b.b)
|
||||
}
|
||||
|
||||
func NewBufferLogger(silent bool) io.Writer {
|
||||
ret := &BufferLogger{}
|
||||
ret.w = bufio.NewWriter(&ret.b)
|
||||
ret.silent = silent
|
||||
|
||||
return ret
|
||||
}
|
Loading…
Reference in New Issue