Added bufferlogger

This commit is contained in:
Matthias Fulz 2020-08-18 08:49:45 +02:00
parent 4bf917bf81
commit a2a60aa99f
1 changed files with 44 additions and 0 deletions

44
bufferlogger.go Normal file
View File

@ -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
}