pkg logging, type ErrorLog interface { Error, ErrorDepth, Errorf }
pkg logging, type ErrorLog interface, Error(...interface{})
pkg logging, type ErrorLog interface, ErrorDepth(int, ...interface{})
pkg logging, type ErrorLog interface, Errorf(string, ...interface{})
pkg logging, type FatalLog interface { Fatal, FatalDepth, Fatalf }
pkg logging, type FatalLog interface, Fatal(...interface{})
pkg logging, type FatalLog interface, FatalDepth(int, ...interface{})
pkg logging, type FatalLog interface, Fatalf(string, ...interface{})
pkg logging, type InfoLog interface { Info, InfoDepth, InfoStack, Infof }
pkg logging, type InfoLog interface, Info(...interface{})
pkg logging, type InfoLog interface, InfoDepth(int, ...interface{})
pkg logging, type InfoLog interface, InfoStack(bool)
pkg logging, type InfoLog interface, Infof(string, ...interface{})
pkg logging, type Logger interface { Error, ErrorDepth, Errorf, Fatal, FatalDepth, Fatalf, FlushLog, Info, InfoDepth, InfoStack, Infof, Panic, PanicDepth, Panicf, V, VDepth, VI, VIDepth }
pkg logging, type Logger interface, Error(...interface{})
pkg logging, type Logger interface, ErrorDepth(int, ...interface{})
pkg logging, type Logger interface, Errorf(string, ...interface{})
pkg logging, type Logger interface, Fatal(...interface{})
pkg logging, type Logger interface, FatalDepth(int, ...interface{})
pkg logging, type Logger interface, Fatalf(string, ...interface{})
pkg logging, type Logger interface, FlushLog()
pkg logging, type Logger interface, Info(...interface{})
pkg logging, type Logger interface, InfoDepth(int, ...interface{})
pkg logging, type Logger interface, InfoStack(bool)
pkg logging, type Logger interface, Infof(string, ...interface{})
pkg logging, type Logger interface, Panic(...interface{})
pkg logging, type Logger interface, PanicDepth(int, ...interface{})
pkg logging, type Logger interface, Panicf(string, ...interface{})
pkg logging, type Logger interface, V(int) bool
pkg logging, type Logger interface, VDepth(int, int) bool
pkg logging, type Logger interface, VI(int) interface {  Info(args ...interface{});; Infof(format string, args ...interface{});; InfoDepth(depth int, args ...interface{});; InfoStack(all bool);}
pkg logging, type Logger interface, VIDepth(int, int) interface {  Info(args ...interface{});; Infof(format string, args ...interface{});; InfoDepth(depth int, args ...interface{});; InfoStack(all bool);}
pkg logging, type PanicLog interface { Panic, PanicDepth, Panicf }
pkg logging, type PanicLog interface, Panic(...interface{})
pkg logging, type PanicLog interface, PanicDepth(int, ...interface{})
pkg logging, type PanicLog interface, Panicf(string, ...interface{})
pkg logging, type Verbosity interface { V, VDepth, VI, VIDepth }
pkg logging, type Verbosity interface, V(int) bool
pkg logging, type Verbosity interface, VDepth(int, int) bool
pkg logging, type Verbosity interface, VI(int) interface {  Info(args ...interface{});; Infof(format string, args ...interface{});; InfoDepth(depth int, args ...interface{});; InfoStack(all bool);}
pkg logging, type Verbosity interface, VIDepth(int, int) interface {  Info(args ...interface{});; Infof(format string, args ...interface{});; InfoDepth(depth int, args ...interface{});; InfoStack(all bool);}
pkg logging, var Discard Logger
