Datadog Logs

HTTP-based Datadog integration using examples/sinks/datadog_sink.py.

Quick start (code)

from fapilog import Settings, get_logger
from examples.sinks.datadog_sink import DatadogSink, DatadogSinkConfig

sink = DatadogSink(
    DatadogSinkConfig(
        api_key="your-api-key",
        site="datadoghq.eu",
        service="my-api",
        env="production",
        batch_size=50,
    )
)
logger = get_logger(settings=Settings(), sinks=[sink])
logger.info("hello datadog", user_id=123)

Entry-point registration

[project.entry-points."fapilog.sinks"]
datadog = "myapp.sinks.datadog_sink:DatadogSink"
core:
  sinks: ["datadog"]
sink_config:
  datadog:
    service: "my-api"
    env: "production"
    batch_size: 25

Operational notes

  • Sends JSON arrays to http-intake.logs.<site>/api/v2/logs.

  • Uses API key header; keep it in env variables or secret stores.

  • Tags propagated via ddtags (defaults to env:<env>); add custom tags upstream if needed.

  • Batch size controls network overhead and Datadog ingestion quotas.

Troubleshooting

  • 403/401 errors: verify DD_API_KEY and DD_SITE.

  • Throttling: reduce batch size or add rate_limit filter before sinks.