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])) } }