Skip to content
Novus Examples
log1.9 KB

Plain-Text Log — Multi-Line Events Needing Line Joining (log)

A Spring-style text log where two stack traces span many physical lines. Eight logical events across a larger number of lines, so a shipper's multi-line rule — anything not starting with a timestamp continues the previous event — can be scored against a known answer.

Preview — first 23 lineslog
2026-03-17 09:14:32.850  INFO 4211 --- [http-nio-8080-exec-3] c.e.s.c.OrderController  : POST /api/checkout started (request_id=req-000411)
2026-03-17 09:14:32.856 DEBUG 4211 --- [http-nio-8080-exec-3] c.e.s.c.PricingService   : pricing 3 line items for cart 9f31a7
2026-03-17 09:14:32.998  WARN 4211 --- [http-nio-8080-exec-3] c.e.s.c.PricingService   : downstream call took 71ms, budget is 50ms
2026-03-17 09:14:34.921 ERROR 4211 --- [http-nio-8080-exec-3] c.e.s.c.OrderController  : Unhandled exception while creating order
java.lang.IllegalStateException: cart 9f31a7 has no priced line items
	at com.example.shop.checkout.PricingService.total(PricingService.java:142)
	at com.example.shop.checkout.OrderService.place(OrderService.java:88)
	at com.example.shop.checkout.OrderController.create(OrderController.java:54)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
Caused by: java.util.NoSuchElementException: no price row for sku SKU-88213
	at com.example.shop.catalog.PriceRepository.require(PriceRepository.java:67)
	... 12 more
2026-03-17 09:14:34.930  INFO 4211 --- [http-nio-8080-exec-3] c.e.s.c.OrderController  : POST /api/checkout completed status=500 duration=2080ms
2026-03-17 09:14:35.104  INFO 4211 --- [scheduling-1] c.e.s.c.MetricsReporter          : flushed 41 metric families
2026-03-17 09:14:36.002 ERROR 4211 --- [http-nio-8080-exec-5] c.e.s.c.OrderController  : Unhandled exception while creating order
Traceback (most recent call last):
  File "/srv/payments/handlers/authorize.py", line 118, in authorize
    charge = psp.create_charge(token, amount_minor, currency)
  File "/srv/payments/psp/client.py", line 141, in _post
    raise UpstreamTimeout(f"{path} exceeded {timeout}s")
shop.payments.errors.UpstreamTimeout: /v1/charges exceeded 2.0s
2026-03-17 09:14:36.010  INFO 4211 --- [http-nio-8080-exec-5] c.e.s.c.OrderController  : POST /api/checkout completed status=500 duration=1904ms

Specifications

Lines
22
Logical Events
8
Stack Traces
2
Continuation Rule
a line not starting with a timestamp continues the previous event
Framework
Spring-style layout
Indented Continuations
true

Testing contract

Expected to pass
Scenario
Apply a multi-line joining rule and count the resulting events.
Expected result
22 physical lines collapse to exactly 8 logical events, each stack trace staying attached to the ERROR line above it rather than becoming separate events.

What is a .log file?

LOG files are plain-text records of events emitted by software, typically one entry per line with a timestamp, severity, and message. There is no single standard, so formats range from unstructured text to structured JSON lines. They are central to debugging, monitoring, and auditing.

How to use this file

Use an example LOG file to test log parsers, timestamp and severity extraction, line-oriented streaming, and ingestion into monitoring or analysis pipelines.

How to use this file for testing

“Plain-Text Log — Multi-Line Events Needing Line Joining (log)” is a deterministic Novus Examples fixture for Observability, Log parsing, Error handling. Structured and plain-text telemetry with known timestamps, levels, request identifiers, and error states for testing log ingestion, correlation, dashboards, and alert pipelines.

Documented properties for this file: LOG · 1,975 bytes. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Telemetry fixtures use fixed trace IDs, span IDs, and timestamps so ingestion is reproducible run to run. Point your collector, parser, or query layer at the file and assert the documented span tree, metric families, or severity mix; service and host names are invented.

Code examples

grep -i error app-plaintext-multiline.log | head
awk '{print $1, $2, $NF}' app-plaintext-multiline.log | head

Generated by generation/observability.py. Free for any use, no attribution required — license.