Simple logging framework for Go applications, inspired by SLF4J.
gol (or golog) provides a generic logging API and a simple implementation which supports logging level and hierarchy.
The Logger interface
is kept minimal and does not allow you to set level directly but
the DefaultLogger, its default implementation, does.
You can also create a Logger hierarchy with the DefaultLogger.
For example, logger a/b/c will inherit logging level and appender from logger a/b
unless its own properties are set.
package main
import (
"os"
"time"
"github.com/goburrow/gol"
)
var exampleLogger, appLogger gol.Logger
func init() {
// Get logger with name "app/example"
exampleLogger = gol.GetLogger("app/example")
// Logger "app" is the parent of the logger "app/example"
appLogger = gol.GetLogger("app")
}
func main() {
exampleLogger.Infof("Running app with arguments: %v.", os.Args)
exampleLogger.Warnf("Going to do nothing.")
time.Sleep(1 * time.Second)
// DefaultLogger is the internal implementation of Logger
appLogger.(*gol.DefaultLogger).SetLevel(gol.Warn)
exampleLogger.Infof("You won't see this message.")
appLogger.Errorf("I %v! %[2]v %[2]v.", "quit", "bye")
// Output:
// INFO [2015-01-14T12:43:35.546+10:00] app/example: Running app with arguments: [/go/bin/example].
// WARN [2015-01-14T12:43:35.546+10:00] app/example: Going to do nothing.
// ERROR [2015-01-14T12:43:36.546+10:00] app: I quit! bye bye.
}