log: add support for trace level, exit on critical
This commit is contained in:
parent
ec7f81f4bc
commit
b9d48b4a93
@ -2,3 +2,4 @@ This package is a fork of https://github.com/inconshreveable/log15, with some
|
|||||||
minor modifications required by the go-ethereum codebase:
|
minor modifications required by the go-ethereum codebase:
|
||||||
|
|
||||||
* Support for log level `trace`
|
* Support for log level `trace`
|
||||||
|
* Modified behavior to exit on `critical` failure
|
||||||
|
@ -58,6 +58,8 @@ func TerminalFormat() Format {
|
|||||||
color = 32
|
color = 32
|
||||||
case LvlDebug:
|
case LvlDebug:
|
||||||
color = 36
|
color = 36
|
||||||
|
case LvlTrace:
|
||||||
|
color = 34
|
||||||
}
|
}
|
||||||
|
|
||||||
b := &bytes.Buffer{}
|
b := &bytes.Buffer{}
|
||||||
|
@ -2,6 +2,7 @@ package log
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/go-stack/stack"
|
"github.com/go-stack/stack"
|
||||||
@ -20,11 +21,14 @@ const (
|
|||||||
LvlWarn
|
LvlWarn
|
||||||
LvlInfo
|
LvlInfo
|
||||||
LvlDebug
|
LvlDebug
|
||||||
|
LvlTrace
|
||||||
)
|
)
|
||||||
|
|
||||||
// Returns the name of a Lvl
|
// Returns the name of a Lvl
|
||||||
func (l Lvl) String() string {
|
func (l Lvl) String() string {
|
||||||
switch l {
|
switch l {
|
||||||
|
case LvlTrace:
|
||||||
|
return "trce"
|
||||||
case LvlDebug:
|
case LvlDebug:
|
||||||
return "dbug"
|
return "dbug"
|
||||||
case LvlInfo:
|
case LvlInfo:
|
||||||
@ -44,6 +48,8 @@ func (l Lvl) String() string {
|
|||||||
// Useful for parsing command line args and configuration files.
|
// Useful for parsing command line args and configuration files.
|
||||||
func LvlFromString(lvlString string) (Lvl, error) {
|
func LvlFromString(lvlString string) (Lvl, error) {
|
||||||
switch lvlString {
|
switch lvlString {
|
||||||
|
case "trace", "trce":
|
||||||
|
return LvlTrace, nil
|
||||||
case "debug", "dbug":
|
case "debug", "dbug":
|
||||||
return LvlDebug, nil
|
return LvlDebug, nil
|
||||||
case "info":
|
case "info":
|
||||||
@ -87,6 +93,7 @@ type Logger interface {
|
|||||||
SetHandler(h Handler)
|
SetHandler(h Handler)
|
||||||
|
|
||||||
// Log a message at the given level with context key/value pairs
|
// Log a message at the given level with context key/value pairs
|
||||||
|
Trace(msg string, ctx ...interface{})
|
||||||
Debug(msg string, ctx ...interface{})
|
Debug(msg string, ctx ...interface{})
|
||||||
Info(msg string, ctx ...interface{})
|
Info(msg string, ctx ...interface{})
|
||||||
Warn(msg string, ctx ...interface{})
|
Warn(msg string, ctx ...interface{})
|
||||||
@ -128,6 +135,10 @@ func newContext(prefix []interface{}, suffix []interface{}) []interface{} {
|
|||||||
return newCtx
|
return newCtx
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *logger) Trace(msg string, ctx ...interface{}) {
|
||||||
|
l.write(msg, LvlTrace, ctx)
|
||||||
|
}
|
||||||
|
|
||||||
func (l *logger) Debug(msg string, ctx ...interface{}) {
|
func (l *logger) Debug(msg string, ctx ...interface{}) {
|
||||||
l.write(msg, LvlDebug, ctx)
|
l.write(msg, LvlDebug, ctx)
|
||||||
}
|
}
|
||||||
@ -146,6 +157,7 @@ func (l *logger) Error(msg string, ctx ...interface{}) {
|
|||||||
|
|
||||||
func (l *logger) Crit(msg string, ctx ...interface{}) {
|
func (l *logger) Crit(msg string, ctx ...interface{}) {
|
||||||
l.write(msg, LvlCrit, ctx)
|
l.write(msg, LvlCrit, ctx)
|
||||||
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *logger) GetHandler() Handler {
|
func (l *logger) GetHandler() Handler {
|
||||||
|
@ -41,6 +41,11 @@ func Root() Logger {
|
|||||||
// etc.) to keep the call depth the same for all paths to logger.write so
|
// etc.) to keep the call depth the same for all paths to logger.write so
|
||||||
// runtime.Caller(2) always refers to the call site in client code.
|
// runtime.Caller(2) always refers to the call site in client code.
|
||||||
|
|
||||||
|
// Trace is a convenient alias for Root().Trace
|
||||||
|
func Trace(msg string, ctx ...interface{}) {
|
||||||
|
root.write(msg, LvlTrace, ctx)
|
||||||
|
}
|
||||||
|
|
||||||
// Debug is a convenient alias for Root().Debug
|
// Debug is a convenient alias for Root().Debug
|
||||||
func Debug(msg string, ctx ...interface{}) {
|
func Debug(msg string, ctx ...interface{}) {
|
||||||
root.write(msg, LvlDebug, ctx)
|
root.write(msg, LvlDebug, ctx)
|
||||||
@ -64,4 +69,5 @@ func Error(msg string, ctx ...interface{}) {
|
|||||||
// Crit is a convenient alias for Root().Crit
|
// Crit is a convenient alias for Root().Crit
|
||||||
func Crit(msg string, ctx ...interface{}) {
|
func Crit(msg string, ctx ...interface{}) {
|
||||||
root.write(msg, LvlCrit, ctx)
|
root.write(msg, LvlCrit, ctx)
|
||||||
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
@ -38,6 +38,8 @@ func sharedSyslog(fmtr Format, sysWr *syslog.Writer, err error) (Handler, error)
|
|||||||
syslogFn = sysWr.Info
|
syslogFn = sysWr.Info
|
||||||
case LvlDebug:
|
case LvlDebug:
|
||||||
syslogFn = sysWr.Debug
|
syslogFn = sysWr.Debug
|
||||||
|
case LvlTrace:
|
||||||
|
syslogFn = func(m string) error { return nil } // There's no syslog level for trace
|
||||||
}
|
}
|
||||||
|
|
||||||
s := strings.TrimSpace(string(fmtr.Format(r)))
|
s := strings.TrimSpace(string(fmtr.Format(r)))
|
||||||
|
Loading…
Reference in New Issue
Block a user