-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathbuffer_test.go
117 lines (88 loc) · 2.67 KB
/
buffer_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package handler_test
import (
"os"
"testing"
"github.com/gookit/goutil/fsutil"
"github.com/gookit/goutil/testutil/assert"
"github.com/gookit/slog"
"github.com/gookit/slog/handler"
)
func TestNewBufferedHandler(t *testing.T) {
logfile := "./testdata/buffer-os-file.log"
assert.NoErr(t, fsutil.DeleteIfFileExist(logfile))
file, err := handler.QuickOpenFile(logfile)
assert.NoErr(t, err)
assert.True(t, fsutil.IsFile(logfile))
bh := handler.NewBuffered(file, 128)
// new logger
l := slog.NewWithHandlers(bh)
l.Info("buffered info message")
bts, err := os.ReadFile(logfile)
assert.NoErr(t, err)
assert.Empty(t, bts)
l.Warn("buffered warn message")
bts, err = os.ReadFile(logfile)
assert.NoErr(t, err)
str := string(bts)
assert.Contains(t, str, "[INFO]")
err = l.FlushAll()
assert.NoErr(t, err)
}
func TestLineBufferedFile(t *testing.T) {
logfile := "./testdata/line-buff-file.log"
assert.NoErr(t, fsutil.DeleteIfFileExist(logfile))
h, err := handler.LineBufferedFile(logfile, 12, slog.AllLevels)
assert.NoErr(t, err)
assert.True(t, fsutil.IsFile(logfile))
r := newLogRecord("Test LineBufferedFile")
err = h.Handle(r)
assert.NoErr(t, err)
bts, err := os.ReadFile(logfile)
assert.NoErr(t, err)
str := string(bts)
assert.Contains(t, str, "[INFO]")
assert.Contains(t, str, "Test LineBufferedFile")
}
func TestLineBuffOsFile(t *testing.T) {
logfile := "./testdata/line-buff-os-file.log"
assert.NoErr(t, fsutil.DeleteIfFileExist(logfile))
file, err := fsutil.QuickOpenFile(logfile)
assert.NoErr(t, err)
h := handler.LineBuffOsFile(file, 12, slog.AllLevels)
assert.NoErr(t, err)
assert.True(t, fsutil.IsFile(logfile))
r := newLogRecord("Test LineBuffOsFile")
err = h.Handle(r)
assert.NoErr(t, err)
bts, err := os.ReadFile(logfile)
assert.NoErr(t, err)
str := string(bts)
assert.Contains(t, str, "[INFO]")
assert.Contains(t, str, "Test LineBuffOsFile")
assert.Panics(t, func() {
handler.LineBuffOsFile(nil, 12, slog.AllLevels)
})
}
func TestLineBuffWriter(t *testing.T) {
logfile := "./testdata/line-buff-writer.log"
assert.NoErr(t, fsutil.DeleteIfFileExist(logfile))
file, err := fsutil.QuickOpenFile(logfile)
assert.NoErr(t, err)
h := handler.LineBuffWriter(file, 12, slog.AllLevels)
assert.NoErr(t, err)
assert.True(t, fsutil.IsFile(logfile))
assert.Panics(t, func() {
handler.LineBuffWriter(nil, 12, slog.AllLevels)
})
r := newLogRecord("Test LineBuffWriter")
err = h.Handle(r)
assert.NoErr(t, err)
bts, err := os.ReadFile(logfile)
assert.NoErr(t, err)
str := string(bts)
assert.Contains(t, str, "[INFO]")
assert.Contains(t, str, "Test LineBuffWriter")
assert.Panics(t, func() {
handler.LineBuffOsFile(nil, 12, slog.AllLevels)
})
}