> ## Documentation Index
> Fetch the complete documentation index at: https://docs.subtrace.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Filter Rules

> Exclude requests from Subtrace logs using simple filters

Subtrace tracks all requests by default, but you can exclude certain requests
with a simple YAML-based config file. Here's an example:

```yaml theme={null}
rules:
  - if: response.status >= 400
    then: include
  - if: request.url == "/health"
    then: exclude
  - if: request.method == "HEAD"
    then: exclude
```

To use a config file, set the `--config` command line flag when starting
Subtrace:

```bash theme={null}
subtrace run --config=/path/to/subtrace.yaml -- node app.js
```

You can also pass this as an environment variable:

```bash theme={null}
export SUBTRACE_CONFIG=/path/to/subtrace.yaml
```

At request time, Subtrace will evaluate all rules in order until a matching
rule is found. Using the first matching rule's `then` field, Subtrace decides
whether the request should be included or excluded. If no matching rule is
found, the request is included by default.

## Syntax

The `if` condition is written using [CEL](https://cel.dev), a simple language
with a syntax similar to JavaScript. Here's a list of commonly used syntax as
reference examples:

* `request.method == "POST"`
* `request.url != "/robots.txt"`
* `request.url.contains("dashboard")`
* `request.url.startsWith("/api/")`
* `request.url.endsWith(".jpg") || request.url.endsWith(".png")`
* `response.status >= 400 && response.status <= 499`

You can find the complete CEL language definition [here](https://github.com/google/cel-spec/blob/master/doc/langdef.md).
