[log]
# Supported values: json, compact, full, pretty.
format = "json"

# Console/local log filter.
#
# Logs that do not match any override use default_level. Matching overrides
# replace the default level, and their field_rules only apply to that override.
[log.filter]
default_level = "info"

# Keep trace_test span exports enabled, but suppress trace_test log events from
# console/local logs. The spans are still exported by [trace].
[[log.filter.overrides]]
name = "trace_test_logs_off"
enabled = true
level = "off"
priority = 100
fuzzy_rules = [
    { kind = "target", match_type = "contains", pattern = "trace_test" },
]

[log.console]
enabled = true

[log.local]
enabled = false
file_dir = "logs"
file_name = "app.log"

[log.remote]
enabled = true
endpoint = "http://127.0.0.1:4318"

# Remote logs are disabled by default and enabled only by overrides.
[log.remote.filter]
default_level = "off"

# Upload only remote_test logs whose event fields match all rules below.
[[log.remote.filter.overrides]]
name = "remote_test_id_100"
enabled = true
level = "info"
priority = 100
fuzzy_rules = [
    { kind = "target", match_type = "contains", pattern = "remote_test" },
]
field_rules = [
    { field = "id", op = "eq", value = 100 },
    { field = "test_kind", op = "contains", value = "remote" },
    { field = "module", op = "starts_with", value = "remote" },
    { field = "status", op = "in", value = ["ok", "retry"] },
    { field = "retry_count", op = "lte", value = 3 },
    { field = "sampled", op = "eq", value = true },
]

[log.dynamic]
enabled = true

[trace]
enabled = true
exporter = "otlp"
endpoint = "http://127.0.0.1:4318"
service_name = "pi-logger-example"
service_version = "0.1.0"

[trace.filter]
default_level = "off"

[[trace.filter.overrides]]
name = "trace_test_on"
enabled = true
level = "info"
priority = 100
fuzzy_rules = [
    { kind = "target", match_type = "contains", pattern = "trace_test" },
]

[metrics]
enabled = false
exporter = "otlp"
endpoint = "http://127.0.0.1:4318"
service_name = "pi-logger-example"
service_version = "0.1.0"