podman

Форк
0
77 строк · 2.0 Кб
1
package viper
2

3
import (
4
	"fmt"
5

6
	jww "github.com/spf13/jwalterweatherman"
7
)
8

9
// Logger is a unified interface for various logging use cases and practices, including:
10
//   - leveled logging
11
//   - structured logging
12
type Logger interface {
13
	// Trace logs a Trace event.
14
	//
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{})
18

19
	// Debug logs a Debug event.
20
	//
21
	// A verbose series of information events.
22
	// They are useful when debugging the system.
23
	Debug(msg string, keyvals ...interface{})
24

25
	// Info logs an Info event.
26
	//
27
	// General information about what's happening inside the system.
28
	Info(msg string, keyvals ...interface{})
29

30
	// Warn logs a Warn(ing) event.
31
	//
32
	// Non-critical events that should be looked at.
33
	Warn(msg string, keyvals ...interface{})
34

35
	// Error logs an Error event.
36
	//
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{})
41
}
42

43
type jwwLogger struct{}
44

45
func (jwwLogger) Trace(msg string, keyvals ...interface{}) {
46
	jww.TRACE.Printf(jwwLogMessage(msg, keyvals...))
47
}
48

49
func (jwwLogger) Debug(msg string, keyvals ...interface{}) {
50
	jww.DEBUG.Printf(jwwLogMessage(msg, keyvals...))
51
}
52

53
func (jwwLogger) Info(msg string, keyvals ...interface{}) {
54
	jww.INFO.Printf(jwwLogMessage(msg, keyvals...))
55
}
56

57
func (jwwLogger) Warn(msg string, keyvals ...interface{}) {
58
	jww.WARN.Printf(jwwLogMessage(msg, keyvals...))
59
}
60

61
func (jwwLogger) Error(msg string, keyvals ...interface{}) {
62
	jww.ERROR.Printf(jwwLogMessage(msg, keyvals...))
63
}
64

65
func jwwLogMessage(msg string, keyvals ...interface{}) string {
66
	out := msg
67

68
	if len(keyvals) > 0 && len(keyvals)%2 == 1 {
69
		keyvals = append(keyvals, nil)
70
	}
71

72
	for i := 0; i <= len(keyvals)-2; i += 2 {
73
		out = fmt.Sprintf("%s %v=%v", out, keyvals[i], keyvals[i+1])
74
	}
75

76
	return out
77
}
78

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.