From 79010cf65de28a7a079a535f3e99f117f67bce2c Mon Sep 17 00:00:00 2001 From: Galen Date: Thu, 5 Sep 2024 15:58:53 -0500 Subject: [PATCH 1/3] chore: move changes from #748 --- generator/generator.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/generator/generator.go b/generator/generator.go index 1909b9c34..077940ee1 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -92,7 +92,23 @@ var generators = map[model.LabelValue]map[model.LabelValue]LogGenerator{ } }() }, + "nginx-json-mixed": func(ctx context.Context, logger *AppLogger) { + go func() { + for ctx.Err() == nil { + level := randLevel() + t := time.Now() + if rand.Intn(10)%2 == 0 && level == ERROR { + log := flog.NewCommonLogFormat(t, randURI(), statusFromLevel(level)) + // Add a stacktrace to the logfmt log, and include a field that will conflict with stream selectors + logger.Log(level, t, fmt.Sprintf("%s %s", log, `namespace=whoopsie caller=flush.go:253 stacktrace="Exception in thread \"main\" java.lang.NullPointerException\n at com.example.myproject.Book.getTitle(Book.java:16)\n at com.example.myproject.Author.getBookTitles(Author.java:25)\n at com.example.myproject.Bootstrap.main(Bootstrap.java:14)"`)) + } + logger.Log(level, t, flog.NewJSONLogFormat(t, randURI(), statusFromLevel(level))) + time.Sleep(time.Duration(rand.Intn(5000)) * time.Millisecond) + } + }() + }, }, + "mimir-dev": { "mimir-ingester": mimirPod, "mimir-distributor": mimirPod, From ac0b323aea903066a13e35d2bd7ce2b0a7479d2b Mon Sep 17 00:00:00 2001 From: Galen Date: Thu, 5 Sep 2024 16:01:42 -0500 Subject: [PATCH 2/3] chore: update spellcehck --- project-words.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/project-words.txt b/project-words.txt index 562bb8055..41034923c 100644 --- a/project-words.txt +++ b/project-words.txt @@ -473,3 +473,5 @@ REFID unroute myown yass +whoopsie +myproject From 96b32571e5380c5c5e951324b4b366e1600301ca Mon Sep 17 00:00:00 2001 From: Galen Date: Thu, 5 Sep 2024 16:18:31 -0500 Subject: [PATCH 3/3] chore: add a common field between json logs and logfmt --- generator/generator.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generator/generator.go b/generator/generator.go index 077940ee1..e4346ac03 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -100,7 +100,7 @@ var generators = map[model.LabelValue]map[model.LabelValue]LogGenerator{ if rand.Intn(10)%2 == 0 && level == ERROR { log := flog.NewCommonLogFormat(t, randURI(), statusFromLevel(level)) // Add a stacktrace to the logfmt log, and include a field that will conflict with stream selectors - logger.Log(level, t, fmt.Sprintf("%s %s", log, `namespace=whoopsie caller=flush.go:253 stacktrace="Exception in thread \"main\" java.lang.NullPointerException\n at com.example.myproject.Book.getTitle(Book.java:16)\n at com.example.myproject.Author.getBookTitles(Author.java:25)\n at com.example.myproject.Bootstrap.main(Bootstrap.java:14)"`)) + logger.Log(level, t, fmt.Sprintf("%s %s", log, `method=GET namespace=whoopsie caller=flush.go:253 stacktrace="Exception in thread \"main\" java.lang.NullPointerException\n at com.example.myproject.Book.getTitle(Book.java:16)\n at com.example.myproject.Author.getBookTitles(Author.java:25)\n at com.example.myproject.Bootstrap.main(Bootstrap.java:14)"`)) } logger.Log(level, t, flog.NewJSONLogFormat(t, randURI(), statusFromLevel(level))) time.Sleep(time.Duration(rand.Intn(5000)) * time.Millisecond)