hl
2 min read
application:
category: monitoring/logs
cli: true
repo: https://github.com/pamburus/hl
hl
High-performance log viewer and processor that transforms logs in JSON and logfmt formats into a human-readable output. Built with efficiency in mind, it enables quick parsing and analysis of large log files with minimal overhead.
Usage
Usage: hl [OPTIONS] [FILE]...
| Option | Environment | Description |
|---|---|---|
--config <FILE> | $HL_CONFIG | Configuration file path |
-s, --sort | Sort messages chronologically | |
-F, --follow | Follow input streams and sort messages chronologically during time frame set by --sync-interval-ms | |
--tail <N> | Number of last messages to preload in --follow mode (default: 10) | |
--sync-interval-ms <MILLISECONDS> | Synchronization interval for live streaming (default: 100) | |
--paging <WHEN> | $HL_PAGING | Control pager usage (default: auto) auto, always, never |
-P | Alias for --paging=never, overrides --paging | |
--help | Print help | |
-V, --version | Print version |
Filtering Options
| Option | Environment | Description |
|---|---|---|
-l, --level <LEVEL> | $HL_LEVEL | Filter messages by level |
--since <TIME> | Filter messages by timestamp >= TIME | |
--until <TIME> | Filter messages by timestamp <= TIME | |
-f, --filter <FILTER> | Filter by field values, e.g. k=v, k~=v, k~~=v | |
-q, --query <QUERY> | Filter using query expressions |
Output Options
| Option | Environment | Description |
|---|---|---|
--color [<WHEN>] | $HL_COLOR | Control color output (default: auto) auto, always, never |
-c | Alias for --color=always, overrides --color | |
--theme <THEME> | $HL_THEME | Set color theme (default: uni) |
-r, --raw | Output raw source messages | |
--no-raw | Disable raw output, overrides --raw | |
--raw-fields | Output raw field values without formatting | |
-h, --hide <KEY> | Hide/reveal fields by key (use !* to reveal all) | |
--flatten <WHEN> | $HL_FLATTEN | Whether to flatten objects (default: always) |
-t, --time-format <FORMAT> | $HL_TIME_FORMAT | Time format (default: %b %d %T.%3N) |
-Z, --time-zone <TZ> | $HL_TIME_ZONE | Set time zone (default: UTC) |
-L, --local | Use local time zone | |
--no-local | Disable local time zone | |
-e, --hide-empty-fields | $HL_HIDE_EMPTY_FIELDS | Hide empty fields |
-E, --show-empty-fields | $HL_SHOW_EMPTY_FIELDS | Show empty fields, overrides hide option |
--input-info <LAYOUTS> | Set input info layout (default: auto) auto, none, minimal, compact, full | |
-o, --output <FILE> | Write output to file |
Input Options
| Option | Environment | Description |
|---|---|---|
--input-format <FORMAT> | $HL_INPUT_FORMAT | Set input format (default: auto) auto, json, logfmt |
--unix-timestamp-unit <UNIT> | $HL_UNIX_TIMESTAMP_UNIT | Unit for Unix timestamps (default: auto) auto, s, ms, us, ns |
--allow-prefix | $HL_ALLOW_PREFIX | Allow non-JSON prefixes |
--delimiter <DELIMITER> | Message delimiter, e.g. NUL, CR, LF, CRLF, custom string |
Advanced Options
| Option | Environment | Description |
|---|---|---|
--interrupt-ignore-count <N> | $HL_INTERRUPT_IGNORE_COUNT | Number of Ctrl-C signals to ignore (default: 3) |
--buffer-size <SIZE> | $HL_BUFFER_SIZE | Set buffer size (default: "256 KiB") |
--max-message-size <SIZE> | $HL_MAX_MESSAGE_SIZE | Max message size (default: "64 MiB") |
-C, --concurrency <N> | $HL_CONCURRENCY | Number of processing threads |
--shell-completions <SHELL> | Print shell completion script bash, elvish, fish, powershell, zsh | |
--man-page | Print man page | |
--list-themes[=<TAGS>] | Print available themes, optionally filtered dark, light, 16color, etc. | |
--dump-index | Print debug index metadata in --sort mode |