What's Changed
Added
-
Option
--queryby @pamburus in #112Usage
-
Command
$ hl my-service.log --query 'level > info or status-code >= 400 or duration > 0.5'Displays messages that either have a level higher than info (i.e. warning or error) or have a status code field with a numeric value >= 400 or a duration field with a numeric value >= 0.5.
-
Command
$ hl my-service.log -q '(request in (95c72499d9ec, 9697f7aa134f, bc3451d0ad60)) or (method != GET)'Displays all messages that have the 'request' field with one of these values, or the 'method' field with a value other than 'GET'.
-
Complete set of supported operators
- Logical operators
- Logical conjunction -
and,&& - Logical disjunction -
or,|| - Logical negation -
not,!
- Logical conjunction -
- Comparison operators
- Equal -
eq,= - Not equal -
ne,!= - Greater than -
gt,> - Greater or equal -
ge,>= - Less than -
lt,< - Less or equal -
le,<=
- Equal -
- String matching operators
- Sub-string check - (
contain,~=), (not contain,!~=) - Wildcard match - (
like), (not like)- Wildcard characters are:
*for zero or more characters and?for a single character
- Wildcard characters are:
- Regular expression match - (
match,~~=), (not match,!~~=)
- Sub-string check - (
- Operators with sets
- Test if value is one of the values in a set -
in (v1, v2),not in (v1, v2)
- Test if value is one of the values in a set -
- Logical operators
-
Notes
- Special field names that are reserved for filtering by predefined fields regardless of the actual JSON field names used to load the corresponding value:
level,message,callerandlogger. - To address a JSON field with one of these names instead of predefined fields, add a period before its name, i.e.,
.levelwill perform a match against the "level" JSON field. - To address a JSON field by its exact name, use a JSON-formatted string, i.e.
-q '".level" = info'. - To specify special characters in field values, also use a JSON-formatted string, i.e.
$ hl my-service.log -q 'message contain "Error:\nSomething unexpected happened"'
- Special field names that are reserved for filtering by predefined fields regardless of the actual JSON field names used to load the corresponding value:
-
Full Changelog: v0.23.2...v0.24.0