A log reader for structured logs that handles non-json lines, displays beautifully colored logs and can filter based on the fields of the json.
It will work especially well with certain specific JSON structures (see "Supported formats").
chmod +x
)Basic usage:
sh
$ jaslog file.json.log
Or using stdin:
sh
$ cat file.json.log | jaslog
You can filter. Syntax is:
<field>=<value>
: search for exact value of field<field>=+<value>
: search for value in field (suggestions of a better syntax are welcome :-P)<field>=^<value>
: search for absence of value in field (suggestions of a better syntax are welcome :-P)sh
$ jaslog file.json.log -f level=info
You can also can also ask to read only the first n lines:
sh
$ jaslog file.json.log -f level=info -n 50
Pull requests to support new formats are welcome of course !
Elixir logs:
json
{
"app": "ecto_sql",
"level": "info",
"message": "create index etc...",
"metadata": {},
"module": "Elixir.Ecto.Migration.Runner",
"pid": "#PID<0.280.0>",
"timestamp": "2019-12-18T10:55:50.000393"
}
Logstash's jsonevent-layout logs:
json
{
"@timestamp": "2020-01-13T12:34:01.740Z",
"source_host": "04fc4fd30dc3",
"file": "Dispatcher.java",
"method": "tryAcceptLeadershipAndRunJobs",
"level": "DEBUG",
"line_number": "927",
"thread_name": "flink-akka.actor.default-dispatcher-3",
"@version": 1,
"logger_name": "org.apache.flink.runtime.dispatcher.StandaloneDispatcher",
"message": "Dispatcher akka.tcp://flink@04fc4fd30dc3:6123/user/dispatcher accepted leadership with fencing token 00000000000000000000000000000000. Start recovered jobs.",
"class": "org.apache.flink.runtime.dispatcher.Dispatcher",
"mdc": {}
}
v<version>
, then push