Crates.io | jaslog |
lib.rs | jaslog |
version | 0.1.14 |
source | src |
created_at | 2020-02-06 09:43:22.777128 |
updated_at | 2023-03-09 10:12:09.678209 |
description | A colored log reader for JSON logs |
homepage | https://github.com/jbruggem/jaslog |
repository | https://github.com/jbruggem/jaslog |
max_upload_size | |
id | 205441 |
size | 66,010 |
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").
cargo install jaslog
chmod +x
)Basic usage:
$ jaslog file.json.log
Or using stdin:
$ cat file.json.log | jaslog
USAGE:
jaslog [OPTIONS] [--] [input_file]
ARGS:
<input_file> Input file to read
OPTIONS:
-f, --filter <filters> Filter the logs. Example: -f app=this -f module=+Drive (use
'+' to search within the field, use '^' to exclude within the
field)
-h, --help Print help information
-n, --lines <number_of_lines> Number of lines to read.
-V, --version Print version information
To filter, the 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)$ jaslog file.json.log -f level=info
You can also can also ask to read only the first n lines:
$ jaslog file.json.log -f level=info -n 50
Pull requests to support new formats are welcome of course !
Elixir logs:
{
"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:
{
"@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": {}
}
Log4J's JSONLayout logs:
{
"thread": "main",
"level": "INFO",
"loggerName": "org.apache.flink.runtime.dispatcher.DispatcherRestEndpoint",
"message": "Starting rest endpoint.",
"endOfBatch": false,
"loggerFqcn": "org.apache.logging.slf4j.Log4jLogger",
"instant": {
"epochSecond": 1622724607,
"nanoOfSecond": 420000000
},
"threadId": 1,
"threadPriority": 5
}
v<version>
, then pushcargo publish