52 lines
814 B
Go
52 lines
814 B
Go
![]() |
package log
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
type envelope struct {
|
||
|
log logger
|
||
|
|
||
|
lvl level
|
||
|
|
||
|
// err is an error attached to the envelope
|
||
|
err error
|
||
|
|
||
|
args map[string]string
|
||
|
}
|
||
|
|
||
|
func (e *envelope) Msg(f string, args ...any) {
|
||
|
if e.log.Level() < e.lvl {
|
||
|
return // No logging
|
||
|
}
|
||
|
// formatter and output things here
|
||
|
E := &envelopeData{*e, time.Now()}
|
||
|
msg := fmt.Sprintf(f, args...)
|
||
|
loggers[e.log].format.Output(msg, E)
|
||
|
e.lvl.Hook(msg)
|
||
|
}
|
||
|
|
||
|
func (e *envelope) Arg(name string, value any) *envelope {
|
||
|
e.args[name] = fmt.Sprintf("%v", value)
|
||
|
return e
|
||
|
}
|
||
|
|
||
|
func (e *envelope) Err(err error) *envelope {
|
||
|
e.err = err
|
||
|
return e
|
||
|
}
|
||
|
|
||
|
func (e *envelope) To(l logger) *envelope {
|
||
|
e.log = l
|
||
|
return e
|
||
|
}
|
||
|
|
||
|
type Fn func(fmt string, args ...any)
|
||
|
|
||
|
func (e *envelope) If(msg func(Fn)) {
|
||
|
if e.log.Level() >= e.lvl {
|
||
|
msg(e.Msg)
|
||
|
}
|
||
|
}
|