2023-02-01 13:36:04 +01:00
|
|
|
# `lnav` config for Synapse logs
|
|
|
|
|
2023-12-13 17:15:22 +01:00
|
|
|
[lnav](https://lnav.org/) is a log-viewing tool. It is particularly useful when
|
2023-02-01 13:36:04 +01:00
|
|
|
you need to interleave multiple log files, or for exploring a large log file
|
|
|
|
with regex filters. The downside is that it is not as ubiquitous as tools like
|
|
|
|
`less`, `grep`, etc.
|
|
|
|
|
|
|
|
This directory contains an `lnav` [log format definition](
|
|
|
|
https://docs.lnav.org/en/v0.10.1/formats.html#defining-a-new-format
|
|
|
|
) for Synapse logs as
|
|
|
|
emitted by Synapse with the default [logging configuration](
|
2023-12-13 17:15:22 +01:00
|
|
|
https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#log_config
|
2023-02-01 13:36:04 +01:00
|
|
|
). It supports lnav 0.10.1 because that's what's packaged by my distribution.
|
|
|
|
|
|
|
|
This should allow lnav:
|
|
|
|
|
|
|
|
- to interpret timestamps, allowing log interleaving;
|
|
|
|
- to interpret log severity levels, allowing colouring by log level(!!!);
|
|
|
|
- to interpret request IDs, allowing you to skip through a specific request; and
|
|
|
|
- to highlight room, event and user IDs in logs.
|
|
|
|
|
|
|
|
See also https://gist.github.com/benje/e2ab750b0a81d11920d83af637d289f7 for a
|
|
|
|
similar example.
|
|
|
|
|
|
|
|
## Example
|
|
|
|
|
|
|
|
[![asciicast](https://asciinema.org/a/556133.svg)](https://asciinema.org/a/556133)
|
|
|
|
|
|
|
|
## Tips
|
|
|
|
|
|
|
|
- `lnav -i /path/to/synapse/checkout/contrib/lnav/synapse-log-format.json`
|
|
|
|
- `lnav my_synapse_log_file` or `lnav synapse_log_files.*`, etc.
|
|
|
|
- `lnav --help` for CLI help.
|
|
|
|
|
|
|
|
Within lnav itself:
|
|
|
|
|
|
|
|
- `?` for help within lnav itself.
|
|
|
|
- `q` to quit.
|
2023-12-13 17:15:22 +01:00
|
|
|
- `/` to search a-la `less` and `vim`, then `n` and `N` to continue searching
|
2023-02-01 13:36:04 +01:00
|
|
|
down and up.
|
|
|
|
- Use `o` and `O` to skip through logs based on the request ID (`POST-1234`, or
|
|
|
|
else the value of the [`request_id_header`](
|
2023-12-13 17:15:22 +01:00
|
|
|
https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html?highlight=request_id_header#listeners
|
|
|
|
) header). This may get confused if the same request ID is repeated among
|
2023-02-01 13:36:04 +01:00
|
|
|
multiple files or process restarts.
|
|
|
|
- ???
|
|
|
|
- Profit
|