# Jaslog

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.


- non-json lines will be displayed but marked clearly
- filters work for any fields, even fields that are not recognized
- if the structure of the JSON is not recognized, all the field will be shown on the log line
- there is no way to control which fields are displayed
- there is no way to control the formatting
It will work especially well with certain specific JSON structures (see "Supported formats").
## Install
1. Download the binary from the [latest release](https://github.com/jbruggem/jaslog/releases)
2. Put it in the folder that's part of your PATH
3. Make it executable (`chmod +x`)
## Usage
Basic usage:
```sh
$ jaslog file.json.log
```
Or using stdin:
```sh
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 -f level=info file.json.log
```
You can also can also ask to read only the first n lines:
```sh
$ jaslog -f level=info -n 50 file.json.log
```
## Explicitly supported formats
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": {}
}
```
### Releasing
* Update version in Cargo.toml
* Commit
* tag with `v<version>`, then push