6
jww "github.com/spf13/jwalterweatherman"
9
// Logger is a unified interface for various logging use cases and practices, including:
11
// - structured logging
12
type Logger interface {
13
// Trace logs a Trace event.
15
// Even more fine-grained information than Debug events.
16
// Loggers not supporting this level should fall back to Debug.
17
Trace(msg string, keyvals ...interface{})
19
// Debug logs a Debug event.
21
// A verbose series of information events.
22
// They are useful when debugging the system.
23
Debug(msg string, keyvals ...interface{})
25
// Info logs an Info event.
27
// General information about what's happening inside the system.
28
Info(msg string, keyvals ...interface{})
30
// Warn logs a Warn(ing) event.
32
// Non-critical events that should be looked at.
33
Warn(msg string, keyvals ...interface{})
35
// Error logs an Error event.
37
// Critical events that require immediate attention.
38
// Loggers commonly provide Fatal and Panic levels above Error level,
39
// but exiting and panicing is out of scope for a logging library.
40
Error(msg string, keyvals ...interface{})
43
type jwwLogger struct{}
45
func (jwwLogger) Trace(msg string, keyvals ...interface{}) {
46
jww.TRACE.Printf(jwwLogMessage(msg, keyvals...))
49
func (jwwLogger) Debug(msg string, keyvals ...interface{}) {
50
jww.DEBUG.Printf(jwwLogMessage(msg, keyvals...))
53
func (jwwLogger) Info(msg string, keyvals ...interface{}) {
54
jww.INFO.Printf(jwwLogMessage(msg, keyvals...))
57
func (jwwLogger) Warn(msg string, keyvals ...interface{}) {
58
jww.WARN.Printf(jwwLogMessage(msg, keyvals...))
61
func (jwwLogger) Error(msg string, keyvals ...interface{}) {
62
jww.ERROR.Printf(jwwLogMessage(msg, keyvals...))
65
func jwwLogMessage(msg string, keyvals ...interface{}) string {
68
if len(keyvals) > 0 && len(keyvals)%2 == 1 {
69
keyvals = append(keyvals, nil)
72
for i := 0; i <= len(keyvals)-2; i += 2 {
73
out = fmt.Sprintf("%s %v=%v", out, keyvals[i], keyvals[i+1])