43 lines
999 B
Go
43 lines
999 B
Go
|
|
package logger
|
||
|
|
|
||
|
|
import (
|
||
|
|
"log/slog"
|
||
|
|
"os"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestMultiHandlerBasic(t *testing.T) {
|
||
|
|
// Create two custom handlers that write to files
|
||
|
|
f1, err := os.CreateTemp("", "log1_*.txt")
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("failed to create temp file: %v", err)
|
||
|
|
}
|
||
|
|
defer os.Remove(f1.Name())
|
||
|
|
f2, err := os.CreateTemp("", "log2_*.txt")
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("failed to create temp file: %v", err)
|
||
|
|
}
|
||
|
|
defer os.Remove(f2.Name())
|
||
|
|
|
||
|
|
h1 := &customMessageOnlyHandler{output: f1}
|
||
|
|
h2 := &customMessageOnlyHandler{output: f2}
|
||
|
|
mh := &multiHandler{handlers: []slog.Handler{h1, h2}}
|
||
|
|
logger := slog.New(mh)
|
||
|
|
|
||
|
|
logger.Info("test message")
|
||
|
|
|
||
|
|
f1.Seek(0, 0)
|
||
|
|
buf1 := make([]byte, 100)
|
||
|
|
n1, _ := f1.Read(buf1)
|
||
|
|
if string(buf1[:n1]) != "test message\n" {
|
||
|
|
t.Errorf("expected message in log1, got: %q", string(buf1[:n1]))
|
||
|
|
}
|
||
|
|
|
||
|
|
f2.Seek(0, 0)
|
||
|
|
buf2 := make([]byte, 100)
|
||
|
|
n2, _ := f2.Read(buf2)
|
||
|
|
if string(buf2[:n2]) != "test message\n" {
|
||
|
|
t.Errorf("expected message in log2, got: %q", string(buf2[:n2]))
|
||
|
|
}
|
||
|
|
}
|