dd-trace-js icon indicating copy to clipboard operation
dd-trace-js copied to clipboard

telemetry: add transmit:false flag for logs

Open tlhunter opened this issue 6 months ago • 4 comments

What does this PR do?

  • adds a new LogConfig class, an optional final argument for log.LEVEL() calls
    • can have more properties added in future if we need to further configure logging
    • exports a default instance to make it convenient to mute logs from telemetry
  • prevents the two noisiest logs from sending telmetry

Motivation

  • host connection errors are useful for users but not useful for us to debug

tlhunter avatar Jun 10 '25 21:06 tlhunter

Overall package size

Self size: 12.42 MB Deduped: 112.51 MB No deduping: 112.9 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.2.1 | 20.64 MB | 20.65 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.10.0 | 9.91 MB | 10.3 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.4 | 2.95 MB | 5.6 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.9.0 | 1.22 MB | 1.22 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.14.2 | 122.36 kB | 850.93 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | source-map | 0.7.6 | 185.63 kB | 185.63 kB | | pprof-format | 2.2.1 | 163.06 kB | 163.06 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

github-actions[bot] avatar Jun 10 '25 21:06 github-actions[bot]

Codecov Report

:x: Patch coverage is 96.29630% with 1 line in your changes missing coverage. Please review. :white_check_mark: Project coverage is 84.07%. Comparing base (ff6a92f) to head (fb1fe25). :warning: Report is 5 commits behind head on master.

Files with missing lines Patch % Lines
packages/dd-trace/src/log/index.js 83.33% 1 Missing :warning:
Additional details and impacted files
@@           Coverage Diff           @@
##           master    #5871   +/-   ##
=======================================
  Coverage   84.07%   84.07%           
=======================================
  Files         484      484           
  Lines       20246    20259   +13     
=======================================
+ Hits        17021    17033   +12     
- Misses       3225     3226    +1     

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

codecov[bot] avatar Jun 10 '25 21:06 codecov[bot]

Datadog Report

Branch report: tlhunter/telemetry-no-transmit-logs Commit report: 10037a1 Test service: dd-trace-js-integration-tests

:white_check_mark: 0 Failed, 1252 Passed, 0 Skipped, 21m 48.72s Total Time :snowflake: 4 New Flaky

New Flaky Tests (4)

  • [email protected] commonJS catches errors in hooks - integration-tests/cypress/cypress.spec.js - Last Failure

    Expand for error
    annot read properties of undefined (reading 'content')
    
  • [email protected] esm catches errors in hooks - integration-tests/cypress/cypress.spec.js - Last Failure

    Expand for error
    annot read properties of undefined (reading 'content')
    
  • cypress@latest esm can run and report tests - integration-tests/cypress/cypress.spec.js - Last Failure

    Expand for error
    annot destructure property 'content' of 'testSessionEvent' as it is undefined.
    
  • cypress@latest esm catches errors in hooks - integration-tests/cypress/cypress.spec.js - Last Failure

    Expand for error
    annot read properties of undefined (reading 'content')
    

Benchmarks

Benchmark execution time: 2025-09-23 23:06:35

Comparing candidate commit fb1fe25407a04f4c086a812455cd33eef1db44ad in PR branch tlhunter/telemetry-no-transmit-logs with baseline commit ff6a92fc069e1b726eef141622e2f97554dc25fd in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 1617 metrics, 63 unstable metrics.

pr-commenter[bot] avatar Jun 10 '25 21:06 pr-commenter[bot]

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: fb1fe25 | Docs | Was this helpful? Give us feedback!

Just to give a bit of context, we log two different error messages in some cases in Ruby:

  1. One for the library user, to debug the issue, with all the information we can provide that's useful.
  2. One for telemetry, with a fixed string.

https://github.com/DataDog/dd-trace-rb/blob/a09772446ae2575d6f0a80e7ce544e088c483ce4/lib/datadog/profiling/http_transport.rb#L50-L51

marcotc avatar Sep 19 '25 21:09 marcotc

@BridgeAR it is only ever the log.error method that is sent to telemetry (e.g. we never send log.warn) so I can simply make a new method without needing to add additional nesting to the log object:

log.errorWithoutTelemetry(foo)

tlhunter avatar Sep 23 '25 21:09 tlhunter

@marcotc that's very interesting that each Ruby error has two strings. We end up doing the string % substitutions for the user stderr logs but we send the non-substituted strings to telemetry. There are a few exceptions where a developer manually concatenates the error message but I think I've found them all.

tlhunter avatar Sep 23 '25 23:09 tlhunter