mirror of
https://github.com/linuxkit/linuxkit.git
synced 2026-01-18 01:48:06 +00:00
This pulls in another slew of other packages. Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
115 lines
2.2 KiB
Go
115 lines
2.2 KiB
Go
package log
|
|
|
|
import (
|
|
"flag"
|
|
"os"
|
|
|
|
"github.com/Sirupsen/logrus"
|
|
"gopkg.in/inconshreveable/log15.v2"
|
|
)
|
|
|
|
// DefaultLogLevel is the default log level value.
|
|
var DefaultLogLevel = len(logrus.AllLevels) - 2
|
|
|
|
// SetLogLevel adjusts the logrus level.
|
|
func SetLogLevel(level int) {
|
|
if level > len(logrus.AllLevels)-1 {
|
|
level = len(logrus.AllLevels) - 1
|
|
} else if level < 0 {
|
|
level = 0
|
|
}
|
|
logrus.SetLevel(logrus.AllLevels[level])
|
|
}
|
|
|
|
// Options capture the logging configuration
|
|
type Options struct {
|
|
Level int
|
|
Stdout bool
|
|
Format string
|
|
CallFunc bool
|
|
CallStack bool
|
|
}
|
|
|
|
// DevDefaults is the default options for development
|
|
var DevDefaults = Options{
|
|
Level: 5,
|
|
Stdout: false,
|
|
Format: "json",
|
|
CallStack: true,
|
|
}
|
|
|
|
// ProdDefaults is the default options for production
|
|
var ProdDefaults = Options{
|
|
Level: 4,
|
|
Stdout: false,
|
|
Format: "term",
|
|
CallFunc: true,
|
|
}
|
|
|
|
func init() {
|
|
Configure(&DevDefaults)
|
|
}
|
|
|
|
// New returns a logger of given context
|
|
func New(ctx ...interface{}) log15.Logger {
|
|
return log15.Root().New(ctx...)
|
|
}
|
|
|
|
// Root returns the process's root logger
|
|
func Root() log15.Logger {
|
|
return log15.Root()
|
|
}
|
|
|
|
// Configure configures the logging
|
|
func Configure(options *Options) {
|
|
|
|
SetLogLevel(options.Level)
|
|
|
|
var f log15.Format
|
|
switch options.Format {
|
|
case "term":
|
|
f = log15.TerminalFormat()
|
|
case "json":
|
|
f = log15.JsonFormatEx(true, true)
|
|
case "logfmt":
|
|
fallthrough
|
|
default:
|
|
f = log15.LogfmtFormat()
|
|
}
|
|
|
|
var h log15.Handler
|
|
if options.Stdout {
|
|
h = log15.StreamHandler(os.Stdout, f)
|
|
} else {
|
|
h = log15.StreamHandler(os.Stderr, f)
|
|
}
|
|
|
|
if options.CallFunc {
|
|
h = log15.CallerFuncHandler(h)
|
|
}
|
|
if options.CallStack {
|
|
h = log15.CallerStackHandler("%+v", h)
|
|
}
|
|
|
|
switch options.Level {
|
|
case 0:
|
|
h = log15.DiscardHandler() // no output
|
|
case 1:
|
|
h = log15.LvlFilterHandler(log15.LvlCrit, h)
|
|
case 2:
|
|
h = log15.LvlFilterHandler(log15.LvlError, h)
|
|
case 3:
|
|
h = log15.LvlFilterHandler(log15.LvlWarn, h)
|
|
case 4:
|
|
h = log15.LvlFilterHandler(log15.LvlInfo, h)
|
|
case 5:
|
|
h = log15.LvlFilterHandler(log15.LvlDebug, h)
|
|
default:
|
|
h = log15.LvlFilterHandler(log15.LvlInfo, h)
|
|
}
|
|
log15.Root().SetHandler(h)
|
|
|
|
// Necessary to stop glog from complaining / noisy logs
|
|
flag.CommandLine.Parse([]string{})
|
|
}
|