Datadog log export?
Hello! I'm getting an app set up that exports tracing spans and logs through tracing-opentelemetry to opentelemetry, which I'm finally sinking into opentelemetry-datadog (latest on all).
I've noticed the spans themselves work great and support nesting- thanks so much for the awesome work!
My question is related to logs: I don't see them in datadog, even though I've enabled them in the DD collector and I'm seeing them in other tracing subscribers.
I searched around for this and found this comment on another issue:
I don't believe that logging is integrated in opentelemetry-datadog yet, could open a separate issue for that one
I'm opening this issue to ask:
- Is log export indeed not supported?
- If not, does the team have any recommendations for how to make it work?
- No expectation, just wondering!
- Would you all be open to a PR adding this functionality?
- If so- I've never worked with implementing a trace collector, do you have any recommendations on where to start? No expectation of course, just asking!
Thanks for your time!
Hey 👋 I haven't used datadog for a while so want to check by log do you mean the log appended as part of a span(Something like

or it's just general logs? For the log within a span yeah I think it makes sense to add support for it. For general logs, we probably need to wait until the log API is merged so that we don't duplicate the work
Hi @TommyCpp!
Personally I'm more after logs within a span, I think that's where most of the value is!
Ahhh I see then I think we should have all you need to build one. In opentelemetry we have a concept called events, which usually corresponds with logs in spans.
We already have some conversion functions to convert opentelemetry spans to a datadog spans. With opentelemetry events attached to the spans, we can just convert them into logs in datadog spans. I think this can be a good starting point.
One question that remains is how does log is encoded in datadog format. Maybe worth taking a look at datadog agent implementation and see how they encode it. This is how we get the span works IIRC.
Either way, feel free to let me know if you need any assistance 🚀