| package logex |
| |
| import ( |
| "bytes" |
| "io" |
| "strings" |
| "testing" |
| ) |
| |
| func (s *S) hello() { |
| s.Warn("warn in hello") |
| } |
| |
| func log(buf io.Writer, s string) { |
| Logger{Logger: NewGoLog(buf)}.Output(2, s) |
| } |
| |
| func test(buf io.Writer) { |
| log(buf, "aa") |
| Info("b") |
| NewLoggerEx(buf).Info("c") |
| Error("ec") |
| s.hello() |
| Struct(&s, 1, "", false) |
| } |
| |
| // ------------------------------------------------------------------- |
| |
| type S struct { |
| Logger |
| } |
| |
| var s = S{} |
| |
| func TestLogex(t *testing.T) { |
| buf := bytes.NewBuffer(nil) |
| logger := NewLoggerEx(buf) |
| logger.depth = 1 |
| goLogStd = logger.Logger |
| SetStd(logger) |
| |
| test(buf) |
| ret := buf.String() |
| |
| println("--------\n", ret) |
| |
| except := []string{ |
| ".test:logex_test.go:19]aa", |
| ".test:logex_test.go:20][INFO] b", |
| ".test:logex_test.go:21][INFO] c", |
| ".test:logex_test.go:22][ERROR] ec", |
| ".(*S).hello:logex_test.go:11][WARN] warn in hello", |
| } |
| |
| for _, e := range except { |
| idx := strings.Index(ret, e) |
| if idx < 0 { |
| t.Fatal("except", e, "not found") |
| } |
| ret = ret[idx+len(e):] |
| } |
| } |