logger: write internal / outlet errors to an error outlet

refs #28
This commit is contained in:
Christian Schwarz
2017-11-16 23:49:47 +01:00
parent f5ead68586
commit a7f70a566d
4 changed files with 69 additions and 22 deletions

View File

@ -78,14 +78,28 @@ type Outlet interface {
WriteEntry(ctx context.Context, entry Entry) error
}
type Outlets map[Level][]Outlet
func NewOutlets() Outlets {
return make(Outlets, len(AllLevels))
type Outlets struct {
reg map[Level][]Outlet
e Outlet
}
func (os Outlets) Add(outlet Outlet, minLevel Level) {
for _, l := range AllLevels[minLevel:] {
os[l] = append(os[l], outlet)
func NewOutlets(loggerErrorOutlet Outlet) *Outlets {
return &Outlets{
make(map[Level][]Outlet, len(AllLevels)),
loggerErrorOutlet,
}
}
func (os *Outlets) Add(outlet Outlet, minLevel Level) {
for _, l := range AllLevels[minLevel:] {
os.reg[l] = append(os.reg[l], outlet)
}
}
func (os *Outlets) Get(level Level) []Outlet {
return os.reg[level]
}
func (os *Outlets) GetLoggerErrorOutlet() Outlet {
return os.e
}