...
Source file
src/go.uber.org/zap/increase_level_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package zap
22
23 import (
24 "bytes"
25 "testing"
26
27 "github.com/stretchr/testify/assert"
28 "go.uber.org/zap/zapcore"
29 "go.uber.org/zap/zaptest/observer"
30 )
31
32 func newLoggedEntry(level zapcore.Level, msg string, fields ...zapcore.Field) observer.LoggedEntry {
33 if len(fields) == 0 {
34 fields = []zapcore.Field{}
35 }
36 return observer.LoggedEntry{
37 Entry: zapcore.Entry{Level: level, Message: msg},
38 Context: fields,
39 }
40 }
41
42 func TestIncreaseLevelTryDecrease(t *testing.T) {
43 errorOut := &bytes.Buffer{}
44 opts := []Option{
45 ErrorOutput(zapcore.AddSync(errorOut)),
46 }
47 withLogger(t, WarnLevel, opts, func(logger *Logger, logs *observer.ObservedLogs) {
48 logger.Warn("original warn log")
49
50 debugLogger := logger.WithOptions(IncreaseLevel(DebugLevel))
51 debugLogger.Debug("ignored debug log")
52 debugLogger.Warn("increase level warn log")
53 debugLogger.Error("increase level error log")
54
55 assert.Equal(t, []observer.LoggedEntry{
56 newLoggedEntry(WarnLevel, "original warn log"),
57 newLoggedEntry(WarnLevel, "increase level warn log"),
58 newLoggedEntry(ErrorLevel, "increase level error log"),
59 }, logs.AllUntimed(), "unexpected logs")
60 assert.Equal(t,
61 "failed to IncreaseLevel: invalid increase level, as level \"info\" is allowed by increased level, but not by existing core\n",
62 errorOut.String(),
63 "unexpected error output",
64 )
65 })
66 }
67
68 func TestIncreaseLevel(t *testing.T) {
69 errorOut := &bytes.Buffer{}
70 opts := []Option{
71 ErrorOutput(zapcore.AddSync(errorOut)),
72 }
73 withLogger(t, WarnLevel, opts, func(logger *Logger, logs *observer.ObservedLogs) {
74 logger.Warn("original warn log")
75
76 errorLogger := logger.WithOptions(IncreaseLevel(ErrorLevel))
77 errorLogger.Debug("ignored debug log")
78 errorLogger.Warn("ignored warn log")
79 errorLogger.Error("increase level error log")
80
81 withFields := errorLogger.With(String("k", "v"))
82 withFields.Debug("ignored debug log with fields")
83 withFields.Warn("ignored warn log with fields")
84 withFields.Error("increase level error log with fields")
85
86 assert.Equal(t, []observer.LoggedEntry{
87 newLoggedEntry(WarnLevel, "original warn log"),
88 newLoggedEntry(ErrorLevel, "increase level error log"),
89 newLoggedEntry(ErrorLevel, "increase level error log with fields", String("k", "v")),
90 }, logs.AllUntimed(), "unexpected logs")
91
92 assert.Empty(t, errorOut.String(), "expect no error output")
93 })
94 }
95
View as plain text