# captures from tests/zoo/go_logrus_json.jsonl, go_slog_json.jsonl, go_zap_prod.jsonl and pino.jsonl
{"level":"info","msg":"zoo info message","time":"2026-10-21T18:13:59Z"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "zoo info message", "values": [], "prefixed": true, "device_ns": null}
{"level":"warning","msg":"zoo warning message","time":"2026-10-21T18:13:59Z"} ⇒ {"rule": "json", "level": "warn", "name": "", "message": "zoo warning message", "values": [], "prefixed": true, "device_ns": null}
{"level":"panic","msg":"zoo panic message","time":"2026-10-21T18:13:59Z"} ⇒ {"rule": "json", "level": "critical", "name": "", "message": "zoo panic message", "values": [], "prefixed": true, "device_ns": null}
{"time":"2026-10-21T18:13:58.886326874Z","level":"DEBUG","msg":"zoo DEBUG message"} ⇒ {"rule": "json", "level": "debug", "name": "", "message": "zoo DEBUG message", "values": [], "prefixed": true, "device_ns": null}
{"level":"warn","ts":1792606440.2505817,"caller":"app/main.go:41","msg":"zoo warn message"} ⇒ {"rule": "json", "level": "warn", "name": "", "message": "zoo warn message", "values": [], "prefixed": true, "file": "app/main.go", "line": 41, "device_ns": null}
{"level":40,"time":1792606442682,"pid":1,"hostname":"32a42baebc1f","msg":"zoo warn message"} ⇒ {"rule": "json", "level": "warn", "name": "", "message": "zoo warn message", "values": [], "prefixed": true, "device_ns": null}
{"level":40,"time":1792606442682,"pid":1,"hostname":"32a42baebc1f","name":"zoo.child","msg":"zoo child warn message"} ⇒ {"rule": "json", "level": "warn", "name": "zoo.child", "message": "zoo child warn message", "values": [], "prefixed": true, "device_ns": null}
# https://github.com/tstack/lnav/blob/master/src/formats/rust_tracing_log.json
{"timestamp":"2025-10-17T22:09:20.139141Z","level":"INFO","fields":{"message":"Loading test scenario from file: \"_data/tests/kill.txt\""},"target":"mapf::testlib","span":{"name":"new_from_file"},"spans":[{"name":"run_scenarios"},{"name":"new_from_file"}]} ⇒ {"rule": "json", "level": "info", "name": "mapf::testlib", "message": "Loading test scenario from file: \"_data/tests/kill.txt\"", "values": [], "prefixed": true, "device_ns": null}
{"timestamp":"2025-10-17T22:09:20.140743Z","level":"DEBUG","fields":{"message":"Greedy AI chose move: Move((1, 1), (1, 2))"},"target":"mapf::ai::greedy","span":{"playing":"1","name":"next"},"spans":[{"name":"run_scenarios"},{"scenario_path":"\"_data/tests/kill.txt\"","name":"run_scenario"},{"playing":"1","name":"next"}]} ⇒ {"rule": "json", "level": "debug", "name": "mapf::ai::greedy", "message": "Greedy AI chose move: Move((1, 1), (1, 2))", "values": [], "prefixed": true, "device_ns": null}
{"timestamp":"2025-10-17T22:09:20.140015Z","level":"TRACE","fields":{"message":"Evaluating move from (1,1) to (1,2) with distance 0"},"target":"mapf::ai::greedy","span":{"playing":"1","name":"next"},"spans":[{"name":"run_scenarios"},{"scenario_path":"\"_data/tests/kill.txt\"","name":"run_scenario"},{"playing":"1","name":"next"}]} ⇒ {"rule": "json", "level": "trace", "name": "mapf::ai::greedy", "message": "Evaluating move from (1,1) to (1,2) with distance 0", "values": [], "prefixed": true, "device_ns": null}
# pino and bunyan number their levels in tens, with pid
# constructed {"level":10,"time":1792606442682,"pid":7,"hostname":"bench-1","msg":"pino level 10"} ⇒ {"rule": "json", "level": "trace", "name": "", "message": "pino level 10", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":20,"time":1792606442682,"pid":7,"hostname":"bench-1","msg":"pino level 20"} ⇒ {"rule": "json", "level": "debug", "name": "", "message": "pino level 20", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":30,"time":1792606442682,"pid":7,"hostname":"bench-1","msg":"pino level 30"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "pino level 30", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":40,"time":1792606442682,"pid":7,"hostname":"bench-1","msg":"pino level 40"} ⇒ {"rule": "json", "level": "warn", "name": "", "message": "pino level 40", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":50,"time":1792606442682,"pid":7,"hostname":"bench-1","msg":"pino level 50"} ⇒ {"rule": "json", "level": "error", "name": "", "message": "pino level 50", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":60,"time":1792606442682,"pid":7,"hostname":"bench-1","msg":"pino level 60"} ⇒ {"rule": "json", "level": "critical", "name": "", "message": "pino level 60", "values": [], "prefixed": true, "device_ns": null}
# constructed {"name":"acme-app","hostname":"bench-1","pid":123,"level":30,"msg":"bunyan line","time":"2026-10-21T18:00:00.000Z","v":0} ⇒ {"rule": "json", "level": "info", "name": "acme-app", "message": "bunyan line", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":"info","lvl":"error","msg":"level key wins over lvl"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "level key wins over lvl", "values": [], "prefixed": true, "device_ns": null}
# constructed {"lvl":"error","msg":"lvl key"} ⇒ {"rule": "json", "level": "error", "name": "", "message": "lvl key", "values": [], "prefixed": true, "device_ns": null}
# constructed {"severity":"WARNING","message":"severity key"} ⇒ {"rule": "json", "level": "warn", "name": "", "message": "severity key", "values": [], "prefixed": true, "device_ns": null}
# constructed {"severity":"NOTICE","message":"notice is info"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "notice is info", "values": [], "prefixed": true, "device_ns": null}
# constructed {"levelname":"CRITICAL","name":"app","message":"levelname key"} ⇒ {"rule": "json", "level": "critical", "name": "app", "message": "levelname key", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":"error","message":"message key"} ⇒ {"rule": "json", "level": "error", "name": "", "message": "message key", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":"info","msg":5,"message":"msg is not a string"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "msg is not a string", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":"info","msg":"named by logger","logger":"pump"} ⇒ {"rule": "json", "level": "info", "name": "pump", "message": "named by logger", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":"info","msg":"named by target","target":"acme::pump"} ⇒ {"rule": "json", "level": "info", "name": "acme::pump", "message": "named by target", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":"info","msg":"caller without a line","caller":"main.go"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "caller without a line", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":"info","msg":"caller with a drive letter","caller":"C:\\app\\main.go:12"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "caller with a drive letter", "values": [], "prefixed": true, "file": "C:\\app\\main.go", "line": 12, "device_ns": null}
# constructed {"level":"info","msg":""} ⇒ {"rule": "json", "level": "info", "name": "", "message": "", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":"info","msg":"rail=13.65V temp=24.5C"} ⇒ {"rule": "json+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 {"level":"info","msg":"fatal error in module"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "fatal error in module", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":"info","msg":"temp\u00e9rature 24.5C \"ok\""} ⇒ {"rule": "json", "level": "info", "name": "", "message": "température 24.5C \"ok\"", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":"info","msg":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "values": [], "prefixed": true, "device_ns": null}
# constructed {"level":30,"msg":"a number level needs pid"} ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":30,\"msg\":\"a number level needs pid\"}"}
# constructed {"level":35,"msg":"custom number","pid":1} ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":35,\"msg\":\"custom number\",\"pid\":1}"}
# constructed {"level":"20","msg":"a number in a string","pid":1} ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":\"20\",\"msg\":\"a number in a string\",\"pid\":1}"}
# constructed {"level":true,"msg":"boolean level","pid":1} ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":true,\"msg\":\"boolean level\",\"pid\":1}"}
# constructed {"level":"loud","msg":"unknown level"} ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":\"loud\",\"msg\":\"unknown level\"}"}
# constructed {"level":"info","code":5} ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":\"info\",\"code\":5}"}
# constructed {"msg":"no level"} ⇒ {"rule": "plain", "level": "info", "message": "{\"msg\":\"no level\"}"}
# constructed {"level":"info","msg":5} ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":\"info\",\"msg\":5}"}
# constructed {"level":"info","msg":"trailing comma",} ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":\"info\",\"msg\":\"trailing comma\",}"}
# constructed [{"level":"info","msg":"an array"}] ⇒ {"rule": "plain", "level": "info", "message": "[{\"level\":\"info\",\"msg\":\"an array\"}]"}
# constructed {"level":"info","event":"structlog names the message event"} ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":\"info\",\"event\":\"structlog names the message event\"}"}
# constructed {"@t":"2026-10-21T18:00:00Z","@mt":"serilog template","@l":"Warning"} ⇒ {"rule": "json", "level": "warn", "name": "", "message": "serilog template"}
# constructed {"log.level":"info","message":"ecs level key"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "ecs level key", "values": [], "prefixed": true, "device_ns": null}
# constructed {"log":"ERROR docker wraps the line\n","stream":"stderr","time":"2026-10-21T18:00:00Z"} ⇒ {"rule": "container", "level": "error", "message": "docker wraps the line"}
# constructed {braces} are text ⇒ {"rule": "plain", "level": "info", "message": "{braces} are text"}
# constructed   {"level":"info","msg":"leading space"} ⇒ {"rule": "plain", "level": "info", "message": "  {\"level\":\"info\",\"msg\":\"leading space\"}"}
# constructed {"level":"info","msg":"trailing text"} tail ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":\"info\",\"msg\":\"trailing text\"} tail"}
# constructed {"level":"info","msg":"truncated ⇒ {"rule": "plain", "level": "info", "message": "{\"level\":\"info\",\"msg\":\"truncated"}
# hashicorp/go-hclog v1.6.3 intlogger.go logJSON: @level, @message, @module, and @caller with
# IncludeLocation; captured
{"@level":"trace","@message":"trace msg","@module":"myapp.db","@timestamp":"2026-10-21T17:15:46.011703-07:00","k":1} ⇒ {"rule": "json", "level": "trace", "name": "myapp.db", "message": "trace msg", "values": [], "prefixed": true, "device_ns": null}
{"@level":"warn","@message":"warn msg","@module":"myapp.db","@timestamp":"2026-10-21T17:15:46.011780-07:00","k":"has space"} ⇒ {"rule": "json", "level": "warn", "name": "myapp.db", "message": "warn msg", "values": [], "prefixed": true, "device_ns": null}
# constructed {"@caller":"/srv/app/main.go:17","@level":"error","@message":"error msg","@module":"myapp.db"} ⇒ {"rule": "json", "level": "error", "name": "myapp.db", "message": "error msg", "values": [], "prefixed": true, "file": "/srv/app/main.go", "line": 17, "device_ns": null}
# go1.26.8 log/slog json_handler.go: Level.String offsets, and source as an object with AddSource
{"time":"2026-10-21T17:15:40.765877-07:00","level":"DEBUG-4","msg":"trace-ish","logger":"myapp"} ⇒ {"rule": "json", "level": "trace", "name": "myapp", "message": "trace-ish", "values": [], "prefixed": true, "device_ns": null}
{"time":"2026-10-21T17:15:40.765898-07:00","level":"ERROR+4","msg":"critical-ish","logger":"myapp"} ⇒ {"rule": "json", "level": "critical", "name": "myapp", "message": "critical-ish", "values": [], "prefixed": true, "device_ns": null}
# constructed {"time":"2026-10-21T17:15:40.765903-07:00","level":"ERROR+8","msg":"past error+7"} ⇒ {"rule": "json", "level": "critical", "name": "", "message": "past error+7"}
# constructed {"time":"2026-10-21T17:15:40.765903-07:00","level":"INFO","source":{"function":"main.main","file":"/srv/app/main.go","line":43},"msg":"with source"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "with source", "values": [], "prefixed": true, "file": "/srv/app/main.go", "line": 43, "device_ns": null}
# tokio-rs/tracing tracing-subscriber 0.3.23 fmt/format/json.rs: filename and line_number with
# with_file and with_line_number
# constructed {"timestamp":"2026-10-22T00:16:51.570000Z","level":"INFO","fields":{"message":"info msg","k":"v"},"target":"tracing_fmt","filename":"src/bin/tracing_fmt.rs","line_number":14} ⇒ {"rule": "json", "level": "info", "name": "tracing_fmt", "message": "info msg", "values": [], "prefixed": true, "file": "src/bin/tracing_fmt.rs", "line": 14, "device_ns": null}
# sirupsen/logrus v1.10.2 json_formatter.go: file as path:line with ReportCaller
# constructed {"file":"/srv/app/main.go:13","func":"main.emit","level":"warning","msg":"warn msg","time":"2026-10-21T17:15:44-07:00"} ⇒ {"rule": "json", "level": "warn", "name": "", "message": "warn msg", "values": [], "prefixed": true, "file": "/srv/app/main.go", "line": 13, "device_ns": null}
# flexi_logger 0.31.10 formats.rs json_format: text, module_path, file and line
# constructed {"level":"WARN","timestamp":"2026-10-21 17:16:52.173956 -07:00","thread":"main","module_path":"flexi_default","file":"src/bin/flexi_default.rs","line":21,"text":"warn msg"} ⇒ {"rule": "json", "level": "warn", "name": "flexi_default", "message": "warn msg", "values": [], "prefixed": true, "file": "src/bin/flexi_default.rs", "line": 21, "device_ns": null}
# dotnet/runtime v9.0.5 Microsoft.Extensions.Logging.Console JsonConsoleFormatter.cs: LogLevel, Category,
# Message; levels as the OpenTelemetry log data model maps .NET's (Critical is FATAL); captured
{"EventId":0,"LogLevel":"Trace","Category":"MyApp.Db","Message":"trace message","State":{"Message":"trace message","{OriginalFormat}":"trace message"}} ⇒ {"rule": "json", "level": "trace", "name": "MyApp.Db", "message": "trace message", "values": [], "prefixed": true, "device_ns": null}
{"EventId":0,"LogLevel":"Information","Category":"MyApp.Db","Message":"info message","State":{"Message":"info message","{OriginalFormat}":"info message"}} ⇒ {"rule": "json", "level": "info", "name": "MyApp.Db", "message": "info message", "values": [], "prefixed": true, "device_ns": null}
# constructed {"EventId":0,"LogLevel":"Warning","Category":"MyApp.Db","Message":"warn message","State":{"Message":"warn message","{OriginalFormat}":"warn message"}} ⇒ {"rule": "json", "level": "warn", "name": "MyApp.Db", "message": "warn message", "values": [], "prefixed": true, "device_ns": null}
# constructed {"Timestamp":"2026-10-21T17:23:36.620Z ","EventId":0,"LogLevel":"Critical","Category":"MyApp.Db","Message":"critical message","State":{"Message":"critical message"}} ⇒ {"rule": "json", "level": "critical", "name": "MyApp.Db", "message": "critical message", "values": [], "prefixed": true, "device_ns": null}
# MongoDB 4.4+ structured log (docs: log-messages): s is F, E, W, I or D1 to D5, c the component
# constructed {"t":{"$date":"2020-05-01T15:16:17.180+00:00"},"s":"I","c":"NETWORK","id":12345,"ctx":"listener","msg":"Listening on","attr":{"address":"127.0.0.1"}} ⇒ {"rule": "json", "level": "info", "name": "NETWORK", "message": "Listening on", "values": [], "prefixed": true, "device_ns": null}
# constructed {"t":{"$date":"2020-05-01T15:16:17.180+00:00"},"s":"W","c":"CONTROL","id":22120,"ctx":"initandlisten","msg":"Access control is not enabled"} ⇒ {"rule": "json", "level": "warn", "name": "CONTROL", "message": "Access control is not enabled", "values": [], "prefixed": true, "device_ns": null}
# constructed {"t":{"$date":"2020-05-01T15:16:17.180+00:00"},"s":"E","c":"STORAGE","id":1,"ctx":"conn1","msg":"write failed"} ⇒ {"rule": "json", "level": "error", "name": "STORAGE", "message": "write failed", "values": [], "prefixed": true, "device_ns": null}
# constructed {"t":{"$date":"2020-05-01T15:16:17.180+00:00"},"s":"F","c":"-","id":2,"ctx":"main","msg":"fatal assertion"} ⇒ {"rule": "json", "level": "critical", "name": "-", "message": "fatal assertion", "values": [], "prefixed": true, "device_ns": null}
# constructed {"t":{"$date":"2020-05-01T15:16:17.180+00:00"},"s":"D3","c":"QUERY","id":3,"ctx":"conn2","msg":"plan cache"} ⇒ {"rule": "json", "level": "debug", "name": "QUERY", "message": "plan cache", "values": [], "prefixed": true, "device_ns": null}
# Elastic Common Schema 8.x logging (ecs-logging spec): log.level and log.logger, flat or nested
# constructed {"@timestamp":"2026-10-21T18:00:00.000Z","log.level":"WARN","message":"disk almost full","log.logger":"app.disk","ecs.version":"1.6.0"} ⇒ {"rule": "json", "level": "warn", "name": "app.disk", "message": "disk almost full", "values": [], "prefixed": true, "device_ns": null}
# constructed {"@timestamp":"2026-10-21T18:00:00.000Z","log":{"level":"error","logger":"app.db"},"message":"nested keys","ecs.version":"1.6.0"} ⇒ {"rule": "json", "level": "error", "name": "app.db", "message": "nested keys", "values": [], "prefixed": true, "device_ns": null}
# GELF 1.1 (go2docs.graylog.org gelf spec): level is a syslog severity, short_message the message
# constructed {"version":"1.1","host":"bench-1","short_message":"pump stalled","timestamp":1792606440.25,"level":3,"_logger_name":"acme.pump"} ⇒ {"rule": "json", "level": "error", "name": "acme.pump", "message": "pump stalled", "values": [], "prefixed": true, "device_ns": null}
# constructed {"version":"1.1","host":"bench-1","short_message":"started","level":6} ⇒ {"rule": "json", "level": "info", "name": "", "message": "started", "values": [], "prefixed": true, "device_ns": null}
# constructed {"version":"1.1","host":"bench-1","short_message":"panic","full_message":"panic\nstack","level":0} ⇒ {"rule": "json", "level": "critical", "name": "", "message": "panic", "values": [], "prefixed": true, "device_ns": null}
# winstonjs/winston v3.19.0 lib/winston/create-logger.js, npm levels, highest first: error, warn,
# info, http, verbose, debug, silly; captured
{"level":"silly","message":"silly message"} ⇒ {"rule": "json", "level": "trace", "name": "", "message": "silly message", "values": [], "prefixed": true, "device_ns": null}
{"level":"verbose","message":"verbose message"} ⇒ {"rule": "json", "level": "debug", "name": "", "message": "verbose message", "values": [], "prefixed": true, "device_ns": null}
{"level":"http","message":"http message"} ⇒ {"rule": "json", "level": "debug", "name": "", "message": "http message", "values": [], "prefixed": true, "device_ns": null}
{"level":"debug","message":"debug message"} ⇒ {"rule": "json", "level": "debug", "name": "", "message": "debug message", "values": [], "prefixed": true, "device_ns": null}
# constructed {"version":"1.1","short_message":"level out of range","level":9} ⇒ {"rule": "plain", "level": "info", "message": "{\"version\":\"1.1\",\"short_message\":\"level out of range\",\"level\":9}"}
# constructed {"s":"E","c":"STORAGE","msg":"s without the MongoDB stamp"} ⇒ {"rule": "plain", "level": "info", "message": "{\"s\":\"E\",\"c\":\"STORAGE\",\"msg\":\"s without the MongoDB stamp\"}"}
# constructed {"t":{"$date":"2020-05-01T15:16:17.180+00:00"},"s":"X","c":"QUERY","msg":"unknown severity"} ⇒ {"rule": "plain", "level": "info", "message": "{\"t\":{\"$date\":\"2020-05-01T15:16:17.180+00:00\"},\"s\":\"X\",\"c\":\"QUERY\",\"msg\":\"unknown severity\"}"}
# constructed {"LogLevel":"Loud","Message":"unknown .NET level"} ⇒ {"rule": "plain", "level": "info", "message": "{\"LogLevel\":\"Loud\",\"Message\":\"unknown .NET level\"}"}
# constructed {"level":"info","msg":"a file without a line","file":"report.pdf"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "a file without a line"}
# constructed {"log":{"level":7},"message":"a number is not an ECS level"} ⇒ {"rule": "plain", "level": "info", "message": "{\"log\":{\"level\":7},\"message\":\"a number is not an ECS level\"}"}
# PostgreSQL 15 docs runtime-config-logging "Using JSON-Format Log Output": error_severity holds the
# severity
# constructed {"timestamp":"2024-01-01 10:00:00.123 UTC","user":"postgres","dbname":"postgres","pid":86,"error_severity":"FATAL","state_code":"28000","message":"role \"pump\" does not exist"} ⇒ {"rule": "json", "level": "critical", "name": "", "message": "role \"pump\" does not exist", "stamp": "2024-01-01 10:00:00.123 UTC"}
# constructed {"timestamp":"2024-01-01 10:00:00.123 UTC","pid":86,"error_severity":"LOG","message":"checkpoint starting: time"} ⇒ {"rule": "json", "level": "info", "leveled": true, "name": "", "message": "checkpoint starting: time"}
# serilog-formatting-compact 3.0 CLEF: @t, @l (Information when left out), @m or the template @mt and
# its properties; a string renders quoted unless its hole asks for `:l`
# constructed {"@t":"2026-10-21T18:00:00Z","@mt":"Pump {Name} stalled at {Pressure} bar","@l":"Warning","Name":"p1","Pressure":3.5} ⇒ {"rule": "json", "level": "warn", "name": "", "message": "Pump \"p1\" stalled at 3.5 bar", "stamp": "2026-10-21T18:00:00Z"}
# constructed {"@t":"2026-10-21T18:00:00Z","@mt":"Pump {Name:l} stalled","Name":"p1"} ⇒ {"rule": "json", "level": "info", "leveled": true, "name": "", "message": "Pump p1 stalled"}
# constructed {"@t":"2026-10-21T18:00:00Z","@m":"Pump p1 stalled","@i":"a1b2c3d4"} ⇒ {"rule": "json", "level": "info", "name": "", "message": "Pump p1 stalled"}
# constructed {"@t":"2026-10-21T18:00:00Z","@mt":"{{literal}} and {Missing}","@l":"Error"} ⇒ {"rule": "json", "level": "error", "name": "", "message": "{literal} and {Missing}"}
# constructed {"@t":"2026-10-21T18:00:00Z","@mt":"Read {Count,5} bytes from {@Device}","Count":512,"Device":{"Id":7}} ⇒ {"rule": "json", "level": "info", "name": "", "message": "Read 512 bytes from {\"Id\": 7}"}
# constructed {"@mt":"no time","@l":"Warning"} ⇒ {"rule": "json", "level": "warn", "name": "", "message": "no time"}
# constructed {"@mt":"no time and no level"} ⇒ {"rule": "plain", "level": "info", "message": "{\"@mt\":\"no time and no level\"}"}
# Google Cloud Logging LogSeverity: DEFAULT is a record with no severity
# constructed {"severity":"DEFAULT","message":"no assigned severity"} ⇒ {"rule": "json", "level": "info", "leveled": false, "name": "", "message": "no assigned severity"}
