Package logging implements a logging infrastructure for Go. It supports different logging backends like syslog, file and memory. Multiple backends can be utilized with different log levels per backend and logger.
$ go get github.com/op/go-logging
After this command go-logging is ready to use. Its source will be in:
$GOROOT/src/pkg/github.com/op/go-logging
You can use go get -u -a
to update all installed packages.
You can find a more detailed example at the end.
package main
import "github.com/op/go-logging"
var log = logging.MustGetLogger("package.example")
func main() {
var format = logging.MustStringFormatter("%{level} %{message}")
logging.SetFormatter(format)
logging.SetLevel(logging.INFO, "package.example")
log.Debug("hello %s", "golang")
log.Info("hello %s", "golang")
}
For docs, see http://godoc.org/github.com/op/go-logging or run:
$ go doc github.com/op/go-logging
package main
import (
stdlog "log"
"os"
"github.com/op/go-logging"
)
var log = logging.MustGetLogger("test")
type Password string
func (p Password) Redacted() interface{} {
return logging.Redact(string(p))
}
func main() {
// Customize the output format
logging.SetFormatter(logging.MustStringFormatter("▶ %{level:.1s} 0x%{id:x} %{message}"))
// Setup one stdout and one syslog backend.
logBackend := logging.NewLogBackend(os.Stderr, "", stdlog.LstdFlags|stdlog.Lshortfile)
logBackend.Color = true
syslogBackend, err := logging.NewSyslogBackend("")
if err != nil {
log.Fatal(err)
}
// Combine them both into one logging backend.
logging.SetBackend(logBackend, syslogBackend)
// Run one with debug setup for "test" and one with error.
for _, level := range []logging.Level{logging.DEBUG, logging.ERROR} {
logging.SetLevel(level, "test")
log.Critical("crit")
log.Error("err")
log.Warning("warning")
log.Notice("notice")
log.Info("info")
log.Debug("debug %s", Password("secret"))
}
}