Filters

Overview

When querying logs, traces, and events in groundcover, you can filter data to narrow the scope of results returned. Filters use a simple field:value syntax and support wildcards, numeric comparisons, and logical operators.

Filtering syntax applies across all native groundcover pages - Logs, Traces, and Events as well as in the Data Explorer, Dashboards, and Monitors.

Basic Filtering

Exact Match

Match a specific value in a field.

level:error
workload:auth-service
status_code:500

When the value contains spaces, use quotes:

error:"failed to authenticate user"

Numeric Comparisons

Compare numeric fields using >, <, >=, <=, =.

duration_seconds:>1000
status_code:>=500

Combine operators to create ranges:

Search across all fields without specifying a field name.

Search for a phrase:

Wildcard Filtering

Wildcard filters allow pattern matching within string fields.

Prefix Match

Match values starting with a string using * at the end.

Matches: auth-service, auth-api, authentication

Suffix Match

Match values ending with a string using * at the start.

Matches: auth-service, payment-service, user-service

Substring Match

Match values containing a string using * on both sides or the ~ operator.

Matches: oauth-service, authentication, authorize-api

Field Existence

Field Has Any Value

Match records where a field exists with any non-empty value.

All records with a trace_id

All records with an error field

Field Is Empty

Match records where a field is empty.

Records with no error

Field Does Not Exist

Use negation with the any value filter to match records where a field doesn't exist.

Records without a trace_id field

Negation

Exclude results by prefixing with -.

Exclude debug logs

Exclude this phrase from results

Boolean Filtered Queries

Combine multiple filters using logical operators.

Implicit AND

Multiple filters on different fields are automatically combined with AND.

Returns logs where level = error and namespace = production.

Implicit OR (Same Field)

Important: Multiple filters on the same field without an explicit operator are automatically combined with OR. This is different from LogsQL's behavior.

Equivalent to: level:error OR level:warn OR level:fatal

Explicit AND

Use AND to explicitly combine conditions.

Explicit OR

Use OR to match records satisfying any condition.

NOT

Use NOT to explicitly negate a condition (equivalent to - prefix).

Same as: -level:debug

API logs excluding debug and trace

Parentheses

Use parentheses to control operator precedence.

Critical issues in production

Complex nested logic:

Differences from LogsQL

groundcover Query Language is influenced by LogsQL but has important differences:

Case Sensitivity

groundcover: Case-insensitive by default

All three match the same records

For case-sensitive matching, use :=:

LogsQL: Case-sensitive by default

Implicit OR on Same Field

groundcover: Multiple filters on the same field are automatically combined with OR

Automatically becomes: level:error OR level:warn

LogsQL: Requires explicit OR operator

Last updated