# captures from tests/zoo/go_log.jsonl and tests/zoo/go_slog_default.jsonl
2026/10/21 18:13:57 zoo log message ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "zoo log message", "values": [], "prefixed": true, "device_ns": null}
2026/10/21 18:13:57 INFO zoo INFO message ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "zoo INFO message", "values": [], "prefixed": true, "device_ns": null}
2026/10/21 18:13:57 WARN zoo WARN message ⇒ {"rule": "go-log", "level": "warn", "name": "", "message": "zoo WARN message", "values": [], "prefixed": true, "device_ns": null}
2026/10/21 18:13:57 ERROR zoo ERROR message ⇒ {"rule": "go-log", "level": "error", "name": "", "message": "zoo ERROR message", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 DEBUG slog debug ⇒ {"rule": "go-log", "level": "debug", "name": "", "message": "slog debug", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 INFO+2 slog level offset above info ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "slog level offset above info", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 WARN+1 slog level offset above warn ⇒ {"rule": "go-log", "level": "warn", "name": "", "message": "slog level offset above warn", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 ERROR+2 slog level offset above error ⇒ {"rule": "go-log", "level": "error", "name": "", "message": "slog level offset above error", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 DEBUG+3 slog level offset above debug ⇒ {"rule": "go-log", "level": "debug", "name": "", "message": "slog level offset above debug", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57.123456 microsecond flag ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "microsecond flag", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57.123456 WARN microsecond flag with a level ⇒ {"rule": "go-log", "level": "warn", "name": "", "message": "microsecond flag with a level", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 INFO started port=8080 mode=fast ⇒ {"rule": "go-log+kv", "level": "info", "name": "", "message": "started port=8080 mode=fast", "values": [["port", 8080, null]], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 rail=13.65V temp=24.5C ⇒ {"rule": "go-log+kv", "level": "info", "name": "", "message": "rail=13.65V temp=24.5C", "values": [["rail", 13.65, "V"], ["temp", 24.5, "C"]], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 error: pump stalled ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "error: pump stalled", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 warn: low pressure ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "warn: low pressure", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 starting; ERROR rate is high ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "starting; ERROR rate is high", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 INFO the word ERROR inside ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "the word ERROR inside", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 main.go:10: file and line flag ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "file and line flag", "values": [], "prefixed": true, "file": "main.go", "line": 10, "device_ns": null}
# constructed 2026/10/21 18:13:57  ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026-10-21 18:13:57 hyphens in the date ⇒ {"rule": "plain", "level": "info", "message": "2026-10-21 18:13:57 hyphens in the date"}
# constructed 26/10/21 18:13:57 two digit year ⇒ {"rule": "plain", "level": "info", "message": "26/10/21 18:13:57 two digit year"}
17/06/09 20:10:52 INFO executor.CoarseGrainedExecutorBackend: Got assigned task 87 ⇒ {"rule": "layout", "level": "info", "name": "executor.CoarseGrainedExecutorBackend", "message": "Got assigned task 87"}
# constructed 2026/10/21 only a date ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "only a date", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 was the day the pump failed ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "was the day the pump failed", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13 no seconds ⇒ {"rule": "plain", "level": "info", "message": "2026/10/21 18:13 no seconds"}
# constructed 18:13:57 only a time ⇒ {"rule": "plain", "level": "info", "message": "18:13:57 only a time"}
# constructed pump: 2026/10/21 18:13:57 prefix before the stamp ⇒ {"rule": "go-log", "level": "info", "name": "pump", "message": "prefix before the stamp", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 18:13:57 ⇒ {"rule": "plain", "level": "info", "message": "2026/10/21 18:13:57"}
# constructed 2026/10/21T18:13:57 T between date and time ⇒ {"rule": "plain", "level": "info", "message": "2026/10/21T18:13:57 T between date and time"}
# constructed time=2026-10-21T18:13:58.426Z level=INFO msg="slog text format" ⇒ {"rule": "logfmt", "level": "info", "message": "slog text format"}
# constructed {"time":"2026-10-21T18:13:58.886Z","level":"INFO","msg":"slog json format"} ⇒ {"rule": "json", "level": "info", "message": "slog json format"}
# constructed 2026-10-21 18:13:56,070 - root - INFO - python format ⇒ {"rule": "python", "level": "info", "name": "root", "message": "python format"}
# constructed I20261021 18:13:55.020609 12 pump.cc:6] glog format ⇒ {"rule": "glog", "level": "info", "name": "pump", "message": "glog format"}
# go1.26.8 src/log/log.go formatHeader: the prefix, unless Lmsgprefix, then Ldate, Ltime with
# Lmicroseconds, then Lshortfile or Llongfile; captured from a program that set each flag
myapp: 2026/10/21 17:15:40 starting up ⇒ {"rule": "go-log", "level": "info", "name": "myapp", "message": "starting up", "values": [], "prefixed": true, "device_ns": null}
myapp: 2026/10/21 17:15:40.187372 starting up ⇒ {"rule": "go-log", "level": "info", "name": "myapp", "message": "starting up", "values": [], "prefixed": true, "device_ns": null}
myapp: 2026/10/22 00:15:40 starting up ⇒ {"rule": "go-log", "level": "info", "name": "myapp", "message": "starting up", "values": [], "prefixed": true, "device_ns": null}
myapp: 2026/10/21 starting up ⇒ {"rule": "go-log", "level": "info", "name": "myapp", "message": "starting up", "values": [], "prefixed": true, "device_ns": null}
2026/10/21 no prefix: connection refused ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "no prefix: connection refused", "values": [], "prefixed": true, "device_ns": null}
myapp: 17:15:40 starting up ⇒ {"rule": "go-log", "level": "info", "name": "myapp", "message": "starting up", "values": [], "prefixed": true, "device_ns": null}
17:15:40.187366 no prefix: connection refused ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "no prefix: connection refused", "values": [], "prefixed": true, "device_ns": null}
myapp: 2026/10/21 17:15:40 main.go:33: starting up ⇒ {"rule": "go-log", "level": "info", "name": "myapp", "message": "starting up", "values": [], "prefixed": true, "file": "main.go", "line": 33, "device_ns": null}
2026/10/21 17:15:40 main.go:37: no prefix: connection refused ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "no prefix: connection refused", "values": [], "prefixed": true, "file": "main.go", "line": 37, "device_ns": null}
myapp: main.go:33: starting up ⇒ {"rule": "go-log", "level": "info", "name": "myapp", "message": "starting up", "values": [], "prefixed": true, "file": "main.go", "line": 33, "device_ns": null}
main.go:37: no prefix: connection refused ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "no prefix: connection refused", "values": [], "prefixed": true, "file": "main.go", "line": 37, "device_ns": null}
2026/10/21 17:15:40 main.go:33: myapp: starting up ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "myapp: starting up", "values": [], "prefixed": true, "file": "main.go", "line": 33, "device_ns": null}
myapp: 17:15:40.187524 main.go:33: starting up ⇒ {"rule": "go-log", "level": "info", "name": "myapp", "message": "starting up", "values": [], "prefixed": true, "file": "main.go", "line": 33, "device_ns": null}
17:15:40.187533 main.go:37: no prefix: connection refused ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "no prefix: connection refused", "values": [], "prefixed": true, "file": "main.go", "line": 37, "device_ns": null}
# constructed 2026/10/21 17:15:40 /srv/app/cmd/pump/main.go:37: long file flag ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "long file flag", "values": [], "prefixed": true, "file": "/srv/app/cmd/pump/main.go", "line": 37, "device_ns": null}
# constructed [pump] 2026/10/21 17:15:40 bracketed prefix ⇒ {"rule": "go-log", "level": "info", "name": "pump", "message": "bracketed prefix", "values": [], "prefixed": true, "device_ns": null}
# constructed 17:15:40 main.go:12: time and file ⇒ {"rule": "go-log", "level": "info", "name": "", "message": "time and file", "values": [], "prefixed": true, "file": "main.go", "line": 12, "device_ns": null}
# go1.26.8 src/log/slog/level.go Level.String: an offset from the nearest level below; levels
# between, as OpenTelemetry's slog bridge maps them (go.opentelemetry.io/contrib/bridges/otelslog)
2026/10/21 17:15:40 DEBUG-4 trace-ish ⇒ {"rule": "go-log", "level": "trace", "name": "", "message": "trace-ish", "values": [], "prefixed": true, "device_ns": null}
2026/10/21 17:15:40 ERROR+4 critical-ish ⇒ {"rule": "go-log", "level": "critical", "name": "", "message": "critical-ish", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 17:15:40 DEBUG-1 just below debug ⇒ {"rule": "go-log", "level": "trace", "name": "", "message": "just below debug", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 17:15:40 ERROR+3 still an error ⇒ {"rule": "go-log", "level": "error", "name": "", "message": "still an error", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 17:15:40 DEBUG-9 an offset below trace's range ⇒ {"rule": "go-log", "level": "trace", "leveled": true, "name": "", "message": "an offset below trace's range"}
myapp: starting up ⇒ {"rule": "plain", "level": "info", "message": "myapp: starting up"}
# constructed pump controller: 2026/10/21 17:15:40 a prefix with a space ⇒ {"rule": "plain", "level": "info", "message": "pump controller: 2026/10/21 17:15:40 a prefix with a space"}
# constructed note: main.c:10: not a Go file ⇒ {"rule": "plain", "level": "info", "message": "note: main.c:10: not a Go file"}
# constructed 12:03:01 up 3 days, a time with no Go flag after it ⇒ {"rule": "plain", "level": "info", "message": "12:03:01 up 3 days, a time with no Go flag after it"}
# constructed 2026/10/21 18:13 a time without seconds ⇒ {"rule": "plain", "level": "info", "message": "2026/10/21 18:13 a time without seconds"}
# a level in brackets after the stamp, as nats-server prints it through log.New with its pid as the prefix
[1] 2019/02/06 07:19:40.624334 [INF] Starting nats-server version 1.3.0 ⇒ {"rule": "nats", "level": "info", "name": "", "message": "Starting nats-server version 1.3.0", "values": [], "prefixed": true, "device_ns": null}
[1] 2019/02/06 07:20:08.508891 [DBG] 172.18.0.1:38630 - cid:1 - Client connection created ⇒ {"rule": "nats", "level": "debug", "name": "", "message": "172.18.0.1:38630 - cid:1 - Client connection created", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 17:15:40 [ERROR] bracketed level ⇒ {"rule": "go-log", "level": "error", "name": "", "message": "bracketed level", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 17:15:40 [WARN] bracketed warn ⇒ {"rule": "go-log", "level": "warn", "name": "", "message": "bracketed warn", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 17:15:52 FATAL fatal msg ⇒ {"rule": "go-log", "level": "critical", "name": "", "message": "fatal msg", "values": [], "prefixed": true, "device_ns": null}
# constructed 2026/10/21 17:15:40 [NOTICE] an unknown word in brackets ⇒ {"rule": "go-log", "level": "info", "leveled": false, "name": "", "message": "[NOTICE] an unknown word in brackets"}
# constructed [12a] 2026/10/21 17:15:40 a bracket that is neither a name nor a pid ⇒ {"rule": "plain", "level": "info", "message": "[12a] 2026/10/21 17:15:40 a bracket that is neither a name nor a pid"}
# go1.26.8 src/log/log.go: a Logger's prefix is often its level, as `log.New(os.Stderr, "ERROR: ",
# log.LstdFlags|log.Lshortfile)` prints it; with Lmsgprefix it follows the header, where a level word
# after the stamp reads too
# constructed ERROR: 2024/01/01 10:00:00 main.go:12: disk full ⇒ {"rule": "go-log", "level": "error", "name": "", "message": "disk full", "file": "main.go", "line": 12, "stamp": "2024/01/01 10:00:00"}
# constructed [ERROR] 2024/01/01 10:00:00 pump stalled ⇒ {"rule": "go-log", "level": "error", "name": "", "message": "pump stalled"}
# constructed WARNING: 17:15:40 main.go:9: pressure low ⇒ {"rule": "go-log", "level": "warn", "name": "", "file": "main.go", "line": 9, "message": "pressure low"}
# constructed Error: 2024/01/01 10:00:00 pump stalled ⇒ {"rule": "go-log", "level": "error", "name": "", "message": "pump stalled"}
# constructed INFO: 2024/01/01 only a date ⇒ {"rule": "go-log", "level": "info", "leveled": true, "name": "", "message": "only a date", "stamp": null}
# constructed 2024/01/01 10:00:00 ERROR: pump stalled ⇒ {"rule": "go-log", "level": "error", "name": "", "message": "pump stalled"}
# constructed 2024/01/01 10:00:00 main.go:12: ERROR: pump stalled ⇒ {"rule": "go-log", "level": "error", "name": "", "message": "pump stalled", "file": "main.go", "line": 12}
# constructed 2024/01/01 10:00:00 Error: connection refused ⇒ {"rule": "go-log", "level": "error", "name": "", "message": "connection refused"}
# constructed 2024/01/01 10:00:00 Error connecting to the pump ⇒ {"rule": "go-log", "level": "info", "leveled": false, "name": "", "message": "Error connecting to the pump"}
# constructed 2024/01/01 10:00:00 ERROR+8 past error+7 ⇒ {"rule": "go-log", "level": "critical", "name": "", "message": "past error+7"}
# constructed 2024/01/01 10:00:00 INFO-1 just below info ⇒ {"rule": "go-log", "level": "debug", "name": "", "message": "just below info"}
# constructed ERROR: pump: no Go header after the prefix ⇒ {"rule": "level-word", "level": "error", "message": "pump: no Go header after the prefix"}
