Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Event ¶
func LogLevelToPrefixMapper ¶
LogLevelToPrefixMapper adds a prefix depending on the event level.
func StandardLogConsumer ¶
StandardLogConsumer writes an event by `log.Printf`.
type GlobalLogger ¶
type GlobalLogger interface {
Info(format string, v ...any)
Warn(format string, v ...any)
Error(format string, v ...any)
Debug(format string, v ...any)
Trace(format string, v ...any)
SetLevel(level Level)
Level() Level
}
GlobalLogger is a static logger instance. This filters logs by level, adds a prefix depending on event level and writes logs by `log.Printf`.
func G ¶
func G() GlobalLogger
G returns the `GlobalLogger`.
Example ¶
package main
import (
"log"
"os"
"github.com/berquerant/logger"
)
func main() {
log.SetFlags(0)
log.SetOutput(os.Stdout)
logger.G().Info("information")
logger.G().Error("error")
logger.G().Debug("debug")
logger.G().SetLevel(logger.Ldebug)
logger.G().Info("change level")
logger.G().Debug("last line")
}
Output: I | information E | error I | change level D | last line
type Logger ¶
type Logger struct {
Proxy
}
Example ¶
package main
import (
"fmt"
"github.com/berquerant/logger"
)
func main() {
levelToPrefix := func(ev logger.Event) (logger.Event, error) {
var p string
switch ev.Level() {
case logger.Linfo:
p = "INFO"
case logger.Lwarn:
p = "WARN"
case logger.Lerror:
p = "ERROR"
default:
p = "?"
}
return logger.NewEvent(
ev.Level(),
fmt.Sprintf("%s %s", p, ev.Format()),
ev.Args(),
), nil
}
format := func(ev logger.Event) (logger.Event, error) {
return logger.NewEvent(ev.Level(), fmt.Sprintf(ev.Format(), ev.Args()...), nil), nil
}
consumeInfo := func(ev logger.Event) (logger.Event, error) {
if ev.Level() == logger.Linfo {
fmt.Printf("ConsumeInfo: %s\n", ev.Format())
}
return ev, nil
}
consumeAll := func(ev logger.Event) (logger.Event, error) {
fmt.Println(ev.Format())
return ev, nil
}
l := &logger.Logger{
Proxy: logger.NewProxy(
logger.NewMapperList(levelToPrefix, format),
logger.NewMapperList(consumeInfo),
logger.NewMapperList(consumeAll),
),
}
l.Info("info msg")
l.Warn("warn msg")
l.Error("error msg")
l.Info("info level value is %d", logger.Linfo)
}
Output: ConsumeInfo: INFO info msg INFO info msg WARN warn msg ERROR error msg ConsumeInfo: INFO info level value is 30 INFO info level value is 30
func NewDefault ¶
NewDefault returns a new logger with `LogLevelFilter`, `LogLevelToPrefixMapper` and `StandardLogConsumer`.
Example ¶
package main
import (
"log"
"os"
"github.com/berquerant/logger"
)
func main() {
log.SetFlags(0)
log.SetOutput(os.Stdout)
l := logger.NewDefault(logger.Lwarn)
l.Info("information")
l.Error("error")
l.Debug("debug")
l.Warn("warn")
l.Debug("last line")
}
Output: E | error W | warn
type Mapper ¶
Mapper converts and/or filters the log event.
func LogLevelFilter ¶
LogLevelFilter ignores an event with the lower level.
type MapperList ¶
type MapperList interface {
// Append appends a Mapper to the end of the list.
Append(f Mapper)
// Map applies the mappers to the event.
// If the mapper returns a nil event or an error then cancels the propagation.
Map(ev Event) (Event, error)
}
MapperList is a set of event conversions. In order from the top of the list, applies the mapper to the event.
func NewMapperList ¶
func NewMapperList(v ...Mapper) MapperList
type Proxy ¶
type Proxy interface {
// Append appends the mapper list to the end of the list.
Append(list MapperList)
// At returns the i-th mapper list.
// Returns false if out of range.
At(i int) (MapperList, bool)
// Put starts processing of the event.
// Apply the first mappers the event, then the second.
Put(ev Event)
SetErrConsumer(ErrConsumer)
}
Proxy accepts an event and processes it.
func NewProxy ¶
func NewProxy(list ...MapperList) Proxy