88 lines
2.9 KiB
Go
88 lines
2.9 KiB
Go
|
|
package log
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"bytes"
|
|||
|
|
"testing"
|
|||
|
|
|
|||
|
|
"github.com/rs/zerolog"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// TestSetSeqWriter_ConsoleMinLevelBecomesInfo 验证挂 Seq 后控制台门槛降到 Info(而非 Warn)
|
|||
|
|
func TestSetSeqWriter_ConsoleMinLevelBecomesInfo(t *testing.T) {
|
|||
|
|
l := NewLogger(1, "", 0)
|
|||
|
|
if got := zerolog.Level(l.console.minLevel.Load()); got != zerolog.DebugLevel {
|
|||
|
|
t.Fatalf("初始 console minLevel=%v want Debug", got)
|
|||
|
|
}
|
|||
|
|
// seqUrl 不必可达:SeqWriter 异步 channel 推送,Write 不阻塞
|
|||
|
|
l.SetSeqWriter("http://127.0.0.1:1", "", "test:level")
|
|||
|
|
defer l.CloseSeq()
|
|||
|
|
if got := zerolog.Level(l.console.minLevel.Load()); got != zerolog.InfoLevel {
|
|||
|
|
t.Fatalf("挂 Seq 后 console minLevel=%v want Info", got)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TestSetConsoleMinLevel_OverridesToWarn 验证导出方法可将 console 门槛单独收紧到 Warn,
|
|||
|
|
// 用于访问日志等高噪声 Logger 在挂 Seq 后仍保持 Warn+。
|
|||
|
|
func TestSetConsoleMinLevel_OverridesToWarn(t *testing.T) {
|
|||
|
|
l := NewLogger(1, "", 0)
|
|||
|
|
l.SetSeqWriter("http://127.0.0.1:1", "", "test:override")
|
|||
|
|
defer l.CloseSeq()
|
|||
|
|
|
|||
|
|
l.SetConsoleMinLevel(zerolog.WarnLevel)
|
|||
|
|
if got := zerolog.Level(l.console.minLevel.Load()); got != zerolog.WarnLevel {
|
|||
|
|
t.Fatalf("SetConsoleMinLevel 后 minLevel=%v want Warn", got)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
var buf bytes.Buffer
|
|||
|
|
l.console.inner = &buf
|
|||
|
|
if _, err := l.console.WriteLevel(zerolog.InfoLevel, []byte("info-line\n")); err != nil {
|
|||
|
|
t.Fatal(err)
|
|||
|
|
}
|
|||
|
|
if buf.Len() != 0 {
|
|||
|
|
t.Fatalf("Info 应被 Warn 门槛丢弃,实际写入: %q", buf.String())
|
|||
|
|
}
|
|||
|
|
if _, err := l.console.WriteLevel(zerolog.WarnLevel, []byte("warn-line\n")); err != nil {
|
|||
|
|
t.Fatal(err)
|
|||
|
|
}
|
|||
|
|
if !bytes.Contains(buf.Bytes(), []byte("warn-line")) {
|
|||
|
|
t.Fatalf("Warn 应放行,实际: %q", buf.String())
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TestLevelFilterWriter_WriteLevel_DropAndPass 直接验证 levelFilterWriter.WriteLevel
|
|||
|
|
// 对低于门槛的级别丢弃(但仍返回成功),达到门槛的放行。
|
|||
|
|
func TestLevelFilterWriter_WriteLevel_DropAndPass(t *testing.T) {
|
|||
|
|
var buf bytes.Buffer
|
|||
|
|
w := newLevelFilterWriter(&buf, zerolog.WarnLevel)
|
|||
|
|
|
|||
|
|
n, err := w.WriteLevel(zerolog.DebugLevel, []byte("debug-msg"))
|
|||
|
|
if err != nil || n != len("debug-msg") {
|
|||
|
|
t.Fatalf("Debug 丢弃返回值异常: n=%d err=%v", n, err)
|
|||
|
|
}
|
|||
|
|
if buf.Len() != 0 {
|
|||
|
|
t.Fatalf("Debug 不应写入 inner: %q", buf.String())
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
n, err = w.WriteLevel(zerolog.InfoLevel, []byte("info-msg"))
|
|||
|
|
if err != nil || n != len("info-msg") {
|
|||
|
|
t.Fatalf("Info 丢弃返回值异常: n=%d err=%v", n, err)
|
|||
|
|
}
|
|||
|
|
if buf.Len() != 0 {
|
|||
|
|
t.Fatalf("Info 不应写入 inner: %q", buf.String())
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if _, err := w.WriteLevel(zerolog.WarnLevel, []byte("warn-msg")); err != nil {
|
|||
|
|
t.Fatal(err)
|
|||
|
|
}
|
|||
|
|
if !bytes.Contains(buf.Bytes(), []byte("warn-msg")) {
|
|||
|
|
t.Fatalf("Warn 应放行: %q", buf.String())
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if _, err := w.WriteLevel(zerolog.ErrorLevel, []byte("error-msg")); err != nil {
|
|||
|
|
t.Fatal(err)
|
|||
|
|
}
|
|||
|
|
if !bytes.Contains(buf.Bytes(), []byte("error-msg")) {
|
|||
|
|
t.Fatalf("Error 应放行: %q", buf.String())
|
|||
|
|
}
|
|||
|
|
}
|