Datadog Synthetics is now available!


Tracer debugging

Datadog debug settings are used to diagnose issues or audit trace data.

We discourage enabling debug mode on your production systems as it increases the number of events that are sent to your loggers. Use sparingly for debugging purposes only.

To return debug level application logs, enable debug mode with the flag -Ddatadog.slf4j.simpleLogger.defaultLogLevel=debug when starting the JVM.

Debugging is disabled by default.

To enable it set the environment variable DATADOG_TRACE_DEBUG=true when using ddtrace-run.

Debug mode is disabled by default. To enable:

Datadog.configure do |c|
  c.tracer debug: true

Application Logs:

By default, all logs are processed by the default Ruby logger. When using Rails, you should see the messages in your application log file.

Datadog client log messages are marked with [ddtrace], so you can isolate them from other messages.

Additionally, it is possible to override the default logger and replace it with a custom one. This is done using the log attribute of the tracer.

f ="<FILENAME>.log", "w+")           # Log messages should go there
Datadog.configure do |c|
  c.tracer log:                 # Overriding the default tracer
end { "this is typically called by tracing code" }

See the API documentation for more details.

Debug mode on the tracer can be enabled as a Start config, resulting in more verbose logging:

package main

import ""

func main() {
    defer tracer.Stop()

Debug mode is disabled by default, to enable it:

const tracer = require('dd-trace').init({
  debug: true

Application Logs:

By default, logging from this library is disabled. In order to get debbuging information and errors sent to logs, the debug options should be set to true in the init() method.

The tracer will then log debug information to console.log() and errors to console.error(). This behavior can be changed by passing a custom logger to the tracer. The logger should contain debug() and error() methods that can handle messages and errors, respectively.

For example:

const bunyan = require('bunyan')
const logger = bunyan.createLogger({
  name: 'dd-trace',
  level: 'trace'

const tracer = require('dd-trace').init({
  logger: {
    debug: message => logger.trace(message),
    error: err => logger.error(err)
  debug: true

For more tracer settings, check out the API documentation.

Debug mode is disabled by default. To enable it, set the isDebugEnabled argument to true when creating a new tracer instance:

using Datadog.Trace;

var tracer = Tracer.Create(isDebugEnabled: true);

// optional: set the new tracer as the new default/global tracer
Tracer.Instance = tracer;

Debug mode is disabled by default. To enable it, set the environment variable DD_TRACE_DEBUG=true. See the PHP configuration docs for details about how and when this environment variable value should be set in order to be properly handled by the tracer.

In order to tell PHP where it should put error_log messages, you can either set it at the server level, or as a PHP ini parameter, which is the standard way to configure PHP behavior.

If you are using an Apache server, use the ErrorLog directive. If you are using an NGINX server, use the error_log directive. If you are configuring instead at the PHP level, use PHP’s error_log ini parameter.

The release binary libraries are all compiled with debug symbols added to the optimized release. It is possible to use gdb or lldb to debug the library and to read core dumps. If you are building the library from source, pass the argument -DCMAKE_BUILD_TYPE=RelWithDebInfo to cmake to compile an optimized build with debug symbols.

cd .build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make install
Table of Contents