119 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package log
 | |
| 
 | |
| import (
 | |
| 	"os"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	root          = &logger{[]interface{}{}, new(swapHandler)}
 | |
| 	StdoutHandler = StreamHandler(os.Stdout, LogfmtFormat())
 | |
| 	StderrHandler = StreamHandler(os.Stderr, LogfmtFormat())
 | |
| )
 | |
| 
 | |
| func init() {
 | |
| 	root.SetHandler(DiscardHandler())
 | |
| }
 | |
| 
 | |
| // 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
 | |
| //
 | |
| // Log a message at the trace level with context key/value pairs
 | |
| //
 | |
| // # Usage
 | |
| //
 | |
| //	log.Trace("msg")
 | |
| //	log.Trace("msg", "key1", val1)
 | |
| //	log.Trace("msg", "key1", val1, "key2", val2)
 | |
| func Trace(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlTrace, ctx, skipLevel)
 | |
| }
 | |
| 
 | |
| // Debug is a convenient alias for Root().Debug
 | |
| //
 | |
| // Log a message at the debug level with context key/value pairs
 | |
| //
 | |
| // # Usage Examples
 | |
| //
 | |
| //	log.Debug("msg")
 | |
| //	log.Debug("msg", "key1", val1)
 | |
| //	log.Debug("msg", "key1", val1, "key2", val2)
 | |
| func Debug(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlDebug, ctx, skipLevel)
 | |
| }
 | |
| 
 | |
| // Info is a convenient alias for Root().Info
 | |
| //
 | |
| // Log a message at the info level with context key/value pairs
 | |
| //
 | |
| // # Usage Examples
 | |
| //
 | |
| //	log.Info("msg")
 | |
| //	log.Info("msg", "key1", val1)
 | |
| //	log.Info("msg", "key1", val1, "key2", val2)
 | |
| func Info(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlInfo, ctx, skipLevel)
 | |
| }
 | |
| 
 | |
| // Warn is a convenient alias for Root().Warn
 | |
| //
 | |
| // Log a message at the warn level with context key/value pairs
 | |
| //
 | |
| // # Usage Examples
 | |
| //
 | |
| //	log.Warn("msg")
 | |
| //	log.Warn("msg", "key1", val1)
 | |
| //	log.Warn("msg", "key1", val1, "key2", val2)
 | |
| func Warn(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlWarn, ctx, skipLevel)
 | |
| }
 | |
| 
 | |
| // Error is a convenient alias for Root().Error
 | |
| //
 | |
| // Log a message at the error level with context key/value pairs
 | |
| //
 | |
| // # Usage Examples
 | |
| //
 | |
| //	log.Error("msg")
 | |
| //	log.Error("msg", "key1", val1)
 | |
| //	log.Error("msg", "key1", val1, "key2", val2)
 | |
| func Error(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlError, ctx, skipLevel)
 | |
| }
 | |
| 
 | |
| // Crit is a convenient alias for Root().Crit
 | |
| //
 | |
| // Log a message at the crit level with context key/value pairs, and then exit.
 | |
| //
 | |
| // # Usage Examples
 | |
| //
 | |
| //	log.Crit("msg")
 | |
| //	log.Crit("msg", "key1", val1)
 | |
| //	log.Crit("msg", "key1", val1, "key2", val2)
 | |
| func Crit(msg string, ctx ...interface{}) {
 | |
| 	root.write(msg, LvlCrit, ctx, skipLevel)
 | |
| 	os.Exit(1)
 | |
| }
 | |
| 
 | |
| // Output is a convenient alias for write, allowing for the modification of
 | |
| // the calldepth (number of stack frames to skip).
 | |
| // calldepth influences the reported line number of the log message.
 | |
| // A calldepth of zero reports the immediate caller of Output.
 | |
| // Non-zero calldepth skips as many stack frames.
 | |
| func Output(msg string, lvl Lvl, calldepth int, ctx ...interface{}) {
 | |
| 	root.write(msg, lvl, ctx, calldepth+skipLevel)
 | |
| }
 |