74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package log
 | |
| 
 | |
| import (
 | |
| 	"os"
 | |
| 
 | |
| 	"github.com/ethereum/go-ethereum/log/term"
 | |
| 	"github.com/mattn/go-colorable"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	root          *logger
 | |
| 	StdoutHandler = StreamHandler(os.Stdout, LogfmtFormat())
 | |
| 	StderrHandler = StreamHandler(os.Stderr, LogfmtFormat())
 | |
| )
 | |
| 
 | |
| func init() {
 | |
| 	if term.IsTty(os.Stdout.Fd()) {
 | |
| 		StdoutHandler = StreamHandler(colorable.NewColorableStdout(), TerminalFormat())
 | |
| 	}
 | |
| 
 | |
| 	if term.IsTty(os.Stderr.Fd()) {
 | |
| 		StderrHandler = StreamHandler(colorable.NewColorableStderr(), TerminalFormat())
 | |
| 	}
 | |
| 
 | |
| 	root = &logger{[]interface{}{}, new(swapHandler)}
 | |
| 	root.SetHandler(LvlFilterHandler(LvlInfo, StdoutHandler))
 | |
| }
 | |
| 
 | |
| // New returns a new logger with the given context.
 | |
| // New is a convenient alias for Root().New
 | |
| func New(ctx ...interface{}) Logger {
 | |
| 	return root.New(ctx...)
 | |
| }
 | |
| 
 | |
| // Root returns the root logger
 | |
| func Root() Logger {
 | |
| 	return root
 | |
| }
 | |
| 
 | |
| // The following functions bypass the exported logger methods (logger.Debug,
 | |
| // 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.
 | |
| 
 | |
| // 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
 | |
| func Debug(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlDebug, ctx)
 | |
| }
 | |
| 
 | |
| // Info is a convenient alias for Root().Info
 | |
| func Info(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlInfo, ctx)
 | |
| }
 | |
| 
 | |
| // Warn is a convenient alias for Root().Warn
 | |
| func Warn(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlWarn, ctx)
 | |
| }
 | |
| 
 | |
| // Error is a convenient alias for Root().Error
 | |
| func Error(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlError, ctx)
 | |
| }
 | |
| 
 | |
| // Crit is a convenient alias for Root().Crit
 | |
| func Crit(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlCrit, ctx)
 | |
| 	os.Exit(1)
 | |
| }
 |