package logging import ( "bytes" "os" "path/filepath" "strings" "testing" ) func TestNewWritesStructuredLog(t *testing.T) { var output bytes.Buffer logger := New(&output) logger.Info("test event", "component", "test") value := output.String() if !strings.Contains(value, `"msg":"test event"`) || !strings.Contains(value, `"component":"test"`) { t.Fatalf("log output = %q", value) } } func TestNewNilWriterDoesNotPanic(t *testing.T) { New(nil).Info("discarded") } func TestOpenFileWritesInsideConfiguredDirectory(t *testing.T) { directory := filepath.Join(t.TempDir(), "logs") logger, closer, err := OpenFile(directory) if err != nil { t.Fatal(err) } logger.Info("file event") if err := closer.Close(); err != nil { t.Fatal(err) } contents, err := os.ReadFile(filepath.Join(directory, "chub.log")) if err != nil || !strings.Contains(string(contents), `"msg":"file event"`) { t.Fatalf("log contents = %q, error = %v", contents, err) } }