# captures from tests/zoo/go_logrus_default.jsonl and tests/zoo/go_slog_text.jsonl
# captured from go1.25.8 log/slog TextHandler and logrus v1.10.2
time=2026-10-21T17:15:40.765-07:00 level=INFO msg="multi\nline" logger=myapp k="a\nb" ⇒ {"rule": "logfmt", "level": "info", "name": "myapp", "message": "multi\nline"}
time="2026-10-21T17:37:34-07:00" level=info msg="multi\nline msg" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "multi\nline msg"}
time="2026-10-21T18:13:59Z" level=info msg="zoo info message" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "zoo info message", "values": [], "prefixed": true, "device_ns": null}
time="2026-10-21T18:13:59Z" level=warning msg="zoo warning message" ⇒ {"rule": "logfmt", "level": "warn", "name": "", "message": "zoo warning message", "values": [], "prefixed": true, "device_ns": null}
time="2026-10-21T18:13:59Z" level=fatal msg="zoo fatal message" ⇒ {"rule": "logfmt", "level": "critical", "name": "", "message": "zoo fatal message", "values": [], "prefixed": true, "device_ns": null}
time="2026-10-21T18:13:59Z" level=panic msg="zoo panic message" ⇒ {"rule": "logfmt", "level": "critical", "name": "", "message": "zoo panic message", "values": [], "prefixed": true, "device_ns": null}
time=2026-10-21T18:13:58.426Z level=DEBUG msg="zoo DEBUG message" ⇒ {"rule": "logfmt", "level": "debug", "name": "", "message": "zoo DEBUG message", "values": [], "prefixed": true, "device_ns": null}
time=2026-10-21T18:13:58.426Z level=WARN msg="zoo WARN message" ⇒ {"rule": "logfmt", "level": "warn", "name": "", "message": "zoo WARN message", "values": [], "prefixed": true, "device_ns": null}
time=2026-10-21T18:13:58.426Z level=ERROR msg="zoo ERROR message" ⇒ {"rule": "logfmt", "level": "error", "name": "", "message": "zoo ERROR message", "values": [], "prefixed": true, "device_ns": null}
# constructed level=trace msg=x ⇒ {"rule": "logfmt", "level": "trace", "name": "", "message": "x", "values": [], "prefixed": true, "device_ns": null}
# constructed level=critical msg=x ⇒ {"rule": "logfmt", "level": "critical", "name": "", "message": "x", "values": [], "prefixed": true, "device_ns": null}
# constructed level=err msg=x ⇒ {"rule": "logfmt", "level": "error", "name": "", "message": "x", "values": [], "prefixed": true, "device_ns": null}
# constructed lvl=warn msg=x ⇒ {"rule": "logfmt", "level": "warn", "name": "", "message": "x", "values": [], "prefixed": true, "device_ns": null}
# constructed severity=ERROR message=x ⇒ {"rule": "logfmt", "level": "error", "name": "", "message": "x", "values": [], "prefixed": true, "device_ns": null}
# constructed level=Debug msg=x ⇒ {"rule": "logfmt", "level": "debug", "name": "", "message": "x", "values": [], "prefixed": true, "device_ns": null}
# constructed msg=x level=info ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "x", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info msg=started ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "started", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info msg="two words" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "two words", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info msg="say \"hi\"" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "say \"hi\"", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info msg="" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info msg= ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info level=error msg=x ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "x", "values": [], "prefixed": true, "device_ns": null}
# constructed level=warn logger=pump msg="named by logger" ⇒ {"rule": "logfmt", "level": "warn", "name": "pump", "message": "named by logger", "values": [], "prefixed": true, "device_ns": null}
# constructed level=warn name=can_bus msg="named by name" ⇒ {"rule": "logfmt", "level": "warn", "name": "can_bus", "message": "named by name", "values": [], "prefixed": true, "device_ns": null}
# constructed level=warn component=acme.net msg="named by component" ⇒ {"rule": "logfmt", "level": "warn", "name": "acme.net", "message": "named by component", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info msg="error rate is high" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "error rate is high", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info msg=started port=8080 duration=1.5s ⇒ {"rule": "logfmt+kv", "level": "info", "name": "", "message": "started", "values": [["port", 8080, null], ["duration", 1.5, "s"]], "prefixed": true, "device_ns": null}
# constructed level=info msg=started http.status=200 ⇒ {"rule": "logfmt+kv", "level": "info", "name": "", "message": "started", "values": [["http.status", 200, null]], "prefixed": true, "device_ns": null}
# constructed ts=1792606440.25 level=info msg=started caller=main.go:42 source=pump.go:7 ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "started", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info msg="rail=13.65V temp=24.5C" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "rail=13.65V temp=24.5C", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info msg=started mode=fast host=bench-1 ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "started", "values": [], "prefixed": true, "device_ns": null}
# constructed level=info msg="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "values": [], "prefixed": true, "device_ns": null}
# constructed level=loud msg=x ⇒ {"rule": "plain", "level": "info", "message": "level=loud msg=x"}
# constructed level=info ⇒ {"rule": "plain", "level": "info", "message": "level=info"}
# constructed msg=x ⇒ {"rule": "plain", "level": "info", "message": "msg=x"}
# constructed level=info extra words msg=x ⇒ {"rule": "plain", "level": "info", "message": "level=info extra words msg=x"}
# constructed the level=info msg=x ⇒ {"rule": "plain", "level": "info", "message": "the level=info msg=x"}
# constructed level=info msg="unterminated ⇒ {"rule": "plain", "level": "info", "message": "level=info msg=\"unterminated"}
# constructed level= msg=x ⇒ {"rule": "plain", "level": "info", "message": "level= msg=x"}
# constructed at=info method=GET path=/ host=pump.example ⇒ {"rule": "plain", "level": "info", "message": "at=info method=GET path=/ host=pump.example"}
# constructed level=info,msg=x ⇒ {"rule": "plain", "level": "info", "message": "level=info,msg=x"}
# constructed level==info msg=x ⇒ {"rule": "plain", "level": "info", "message": "level==info msg=x"}
# constructed =info msg=x ⇒ {"rule": "plain", "level": "info", "message": "=info msg=x"}
# constructed level=error is what the log line said ⇒ {"rule": "plain", "level": "info", "message": "level=error is what the log line said"}
# constructed {"level":"info","msg":"json object"} ⇒ {"rule": "json", "level": "info", "message": "json object"}
# Go's quoted-string escapes
# constructed level=info msg="tab\there" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "tab\there"}
# constructed level=info msg="cr\rlf" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "cr\rlf"}
# constructed level=info msg="back\\slash" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "back\\slash"}
# constructed level=info msg="bell\a" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "bell\u0007"}
# constructed level=info msg="\u00e9t\u00e9" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "été"}
# constructed level=info msg="\U0001F600" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "😀"}
# constructed level=info msg="\x41\101" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "AA"}
# constructed level=info msg="\xff" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "�"}
# constructed level=info msg="\ud800" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "�"}
# constructed level=info msg="unknown \q escape" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "unknown \\q escape"}
# go1.26.8 log/slog text_handler.go: Level.String offsets and source=path:line with AddSource
time=2026-10-21T17:15:40.765-07:00 level=DEBUG-4 msg=trace-ish logger=myapp k=1 ⇒ {"rule": "logfmt+kv", "level": "trace", "name": "myapp", "message": "trace-ish", "values": [["k", 1, null]], "prefixed": true, "device_ns": null}
time=2026-10-21T17:15:40.765-07:00 level=ERROR+4 msg=critical-ish logger=myapp ⇒ {"rule": "logfmt", "level": "critical", "name": "myapp", "message": "critical-ish", "values": [], "prefixed": true, "device_ns": null}
# constructed time=2026-10-21T17:15:40.765-07:00 level=INFO source=/srv/app/main.go:33 msg="with source" ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "with source", "values": [], "prefixed": true, "file": "/srv/app/main.go", "line": 33, "device_ns": null}
# sirupsen/logrus v1.10.2 text_formatter.go: func and file=path:line with ReportCaller
# constructed time="2026-10-21T17:37:34-07:00" level=warning msg="warn msg" func=main.emit file="/srv/app/main.go:13" ⇒ {"rule": "logfmt", "level": "warn", "name": "", "message": "warn msg", "values": [], "prefixed": true, "file": "/srv/app/main.go", "line": 13, "device_ns": null}
# charmbracelet/log v2.0.1 logfmt formatter: the prefix as prefix=; captured
time="2026/10/21 17:15:52" level=info prefix=myapp msg="info msg" k=v ⇒ {"rule": "logfmt", "level": "info", "name": "myapp", "message": "info msg", "values": [], "prefixed": true, "device_ns": null}
time="2026/10/21 17:15:52" level=error prefix=myapp msg="error msg" err="connection refused" ⇒ {"rule": "logfmt", "level": "error", "name": "myapp", "message": "error msg", "values": [], "prefixed": true, "device_ns": null}
time="2026/10/21 17:15:52" prefix=myapp msg="print msg" ⇒ {"rule": "plain", "level": "info", "message": "time=\"2026/10/21 17:15:52\" prefix=myapp msg=\"print msg\""}
# constructed level=info msg=x file=report.pdf ⇒ {"rule": "logfmt", "level": "info", "name": "", "message": "x"}
# inconshreveable/log15 v2 format.go and go-ethereum log: `lvl` holds four letters, `eror`, `dbug`
# and `trce` among them
# constructed t=2024-01-01T10:00:00+0000 lvl=eror msg="pump stalled" ⇒ {"rule": "logfmt", "level": "error", "name": "", "message": "pump stalled"}
# constructed t=2024-01-01T10:00:00+0000 lvl=dbug msg=polling ⇒ {"rule": "logfmt", "level": "debug", "name": "", "message": "polling"}
# constructed t=2024-01-01T10:00:00+0000 lvl=trce msg=tick ⇒ {"rule": "logfmt", "level": "trace", "name": "", "message": "tick"}
# constructed t=2024-01-01T10:00:00+0000 lvl=crit msg="gave up" ⇒ {"rule": "logfmt", "level": "critical", "name": "", "message": "gave up"}
