Let’s start with “why” should one even bother with setting up Datadog on the local machine. I can share my motivation to set it up My strong ‘why’:trying to make sense of the flaky tests: We had an extensive end-to-end test suite with high coverage. But sadly, the tests grew flakier and flakier over time. To my dismay, when the tests were run in isolation, they’d pass. When we ran the entire test suite, many tests would start failing. The application logs corresponding to the tests should help us debug. But I couldn’t even understand where the logs for a particular test started and ended, let alone make sense of them. Datadog to the rescue 🦸! We have been using in our project to visualize the production logs and we found it super useful. That’s when I had an epiphany! What if I set up Datadog locally to dissect these logs? And that’s what triggered the contents of this blog post. Datadog Our application is written in Java and my local machine runs on MacOS. You could tweak the below steps to suit your need. What do you need to set up: Sign up for Datadog . Our scope here is only local debugging, so a should suffice. here free trial Datadog Agent is the Settings like service name, environment, etc. can be made in the agent. software that monitors the host on which it runs. , Datadog's APM (App Performance Monitoring) client Java library. is a jar that contains APIs to automatically or manually and Java applications. dd-trace-java dd-trace-java trace profile Step 1 — Sign up process: After giving your email id and other details, you would be prompted to choose your tech stack on the next page. after you click ‘Next’, comes the most important part. You would be given the ‘agent setup’ instructions. My local machine is MacOSX, so I chose it appropriately. Please note down the and values, as they will be used in the subsequent steps. DD_API_KEY DD_SITE Step 2— Datadog Agent Installation: For MacOS, you could install via (package manager for MacOS). Use the . ¹ brew commands given here for installation Customize the as shown below datadog-agent After the above step is completed, you’ll be asked to ‘Finish’ in the Datadog-web-UI. You’ll be prompted to add any . You could add , etc (as per your project needs). integrations Java Docker Step 3 — Install Datadog tracer: Download the jar from ² dd-java-agent here For your Java application, make sure you’re using a version of Java that comes with an in-built . This is needed for tracing. OpenJdK8 comes with an inbuilt . If you’re using Oracle Java, you need a commercial license to use **FlightRecorder.**³ FlightRecorder FlightRecorder Running your application: add the VM options for our java application: -javaagent:"/Users/home/Downloads/dd-java-agent.jar" -Ddd.profiling.enabled=true -Ddd.logs.injection=true -Ddd.agent.port=8126 -Ddd.service=ecommerce-service -Ddd.env=local -XX:FlightRecorderOptions=stackdepth=256 If you are using a task, you can include the as below: gradle jvmArgs jvmArgs = ["-javaagent:/Users/home/Downloads/dd-java-agent.jar", "-XX:FlightRecorderOptions=stackdepth=256", "-Ddd.profiling.enabled=true", "-Ddd.logs.injection=true", "-Ddd.agent.port=8126", "-Ddd.service=ecommerce-service", "-Ddd.env=local"] Now start your Java application. If the tracing is happening correctly, you should see the below logs: Logging in Datadog: To enable logs to be streamed to Datadog, follow the instructions in the Datadog Web UI. ⁴ For — Config directory is and the file is present at macOS ~/.datadog-agent/conf.d/java.d ~/.datadog-agent/conf.d/java.d/conf.yaml and now, the should start flowing in Datadog. logs Some Tips: Add appropriate logs at the beginning and end of each method in your application. It’s very useful while debugging. debug Add a mechanism to inject and . It’s an amazing lifesaver and puts the logs in proper context.⁵ span id trace id Conclusion: Once I had the Datadog agent up and running locally, I was able to view all the requests contextually. And voila! All of my end-to-end tests are passing now 🙂 Happy logging! Additional Info: ¹Alternatively, you could also download the and install it. This link can also be obtained in the above ‘Agent Setup’ step (refer to screenshot) dmg package ²Direct download the jar. dd-trace-java ³ Starting from JDK 11, we may use without activating anything. More details can be found . FlightRecorder here ⁴More details are . here ⁵If your application is Java, you could you this library for adding and to the request. spring-cloud-sleuth span_id trace_id