44 lines
676 B
Go
44 lines
676 B
Go
|
package logging
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
type Backend interface {
|
||
|
Write(*Record) error
|
||
|
SetLevel(Level)
|
||
|
SetFormatter(*Formatter)
|
||
|
}
|
||
|
|
||
|
type StdoutBackend struct {
|
||
|
l io.Writer
|
||
|
level Level
|
||
|
formatter *Formatter
|
||
|
}
|
||
|
|
||
|
func NewStdoutBackend() (b *StdoutBackend) {
|
||
|
b = &StdoutBackend{
|
||
|
l: os.Stdout,
|
||
|
formatter: &defaultFormatter,
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (b StdoutBackend) Write(r *Record) error {
|
||
|
if r.Level >= b.level {
|
||
|
//check back for auto dereferencing
|
||
|
text := (*b.formatter)(r)
|
||
|
b.l.Write([]byte(text))
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (b *StdoutBackend) SetLevel(l Level) {
|
||
|
b.level = l
|
||
|
}
|
||
|
|
||
|
func (b *StdoutBackend) SetFormatter(f *Formatter) {
|
||
|
b.formatter = f
|
||
|
}
|