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)
Environment setup (recommended)
export DD_API_KEY=your-api-key
export DD_SITE=datadoghq.com # or datadoghq.eu
export DD_SERVICE=my-api
export DD_ENV=production
from fapilog import get_logger
from examples.sinks.datadog_sink import DatadogSink
logger = get_logger(sinks=[DatadogSink()])
logger.error("payment failed", order_id="ord-1")
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 toenv:<env>); add custom tags upstream if needed.Batch size controls network overhead and Datadog ingestion quotas.
Troubleshooting
403/401 errors: verify
DD_API_KEYandDD_SITE.Throttling: reduce batch size or add
rate_limitfilter before sinks.