dogger

Форк
0
/
format.go 
56 строк · 1.3 Кб
1
package format
2

3
import (
4
	"fmt"
5
	"time"
6

7
	"github.com/enescakir/emoji"
8
	"github.com/fatih/color"
9
	"github.com/nikwo/dogger/context"
10
)
11

12
const (
13
	DefaultTimeFormat = time.RFC3339
14
)
15

16
var dog = emoji.Sprint(":dog:")
17

18
var colorizers = map[string]func(...interface{}) string{
19
	"trace":   color.New(color.BgBlack).Add(color.FgHiWhite).SprintFunc(),
20
	"debug":   color.New(color.BgBlack).Add(color.FgHiBlue).SprintFunc(),
21
	"info":    color.New(color.BgBlack).Add(color.FgHiGreen).SprintFunc(),
22
	"warn":    color.New(color.BgBlack).Add(color.FgHiYellow).SprintFunc(),
23
	"error":   color.New(color.BgBlack).Add(color.FgHiRed).SprintFunc(),
24
	"default": color.New(color.BgBlack).Add(color.FgWhite).SprintFunc(),
25
}
26

27
type Format interface {
28
	FormatString(ctx context.LogContext) string
29
	MatchVerboseColor(lvl string) string
30
}
31

32
type defaultFormat struct {
33
}
34

35
func (df *defaultFormat) FormatString(logContext context.LogContext) string {
36
	return fmt.Sprintf(
37
		"%s [%s] %s %s",
38
		dog,
39
		df.MatchVerboseColor(logContext.GetLevel().String()),
40
		logContext.GetTime().Format(DefaultTimeFormat),
41
		logContext.GetCaller(),
42
	)
43
}
44

45
func (df *defaultFormat) MatchVerboseColor(lvl string) string {
46
	colorizer, exists := colorizers[lvl]
47
	if !exists {
48
		return colorizers["default"](lvl)
49
	}
50

51
	return colorizer(lvl)
52
}
53

54
func DefaultFormatter() Format {
55
	return &defaultFormat{}
56
}
57

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

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

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

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