Skip to content

v0.24.0

Compare
Choose a tag to compare
@pamburus pamburus released this 27 Dec 20:06
· 356 commits to master since this release
cfaadd2

What's Changed

Added

  • Option --query by @pamburus in #112

    Usage

    • 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, !
      • Comparison operators
        • Equal - eq, =
        • Not equal - ne, !=
        • Greater than - gt, >
        • Greater or equal - ge, >=
        • Less than - lt, <
        • Less or equal - le, <=
      • 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
        • Regular expression match - (match, ~~=), (not match, !~~=)
      • Operators with sets
        • Test if value is one of the values in a set - in (v1, v2), not in (v1, v2)
    • 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, caller and logger.
      • To address a JSON field with one of these names instead of predefined fields, add a period before its name, i.e., .level will 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"'
        

Full Changelog: v0.23.2...v0.24.0