Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[test visibility] Add option to automatically report logs within tests when using winston #4762

Merged
merged 9 commits into from
Oct 9, 2024

Conversation

juan-fernandez
Copy link
Collaborator

@juan-fernandez juan-fernandez commented Oct 4, 2024

What does this PR do?

Add instrumentation to winston to automatically add a transport configuration that reports logs to datadog agentlessly, following the same instructions shown in the docs today for agentless logs: https://docs.datadoghq.com/logs/log_collection/nodejs/?tab=winston30#agentless-logging. This only happens if LogSubmissionPlugin is active, which only happens if DD_AGENTLESS_LOG_SUBMISSION_ENABLED is passed.

Motivation

Same as we do for other languages like Java (see docs), we want to be able to automatically report logs to Datadog's logs product if DD_AGENTLESS_LOG_SUBMISSION_ENABLED is passed.

ℹ️ Only winston in jest, mocha and cucumber is supported at the moment.

const { createLogger, format, transports } = require('winston')
const { expect } = require('chai')

const logger = createLogger({
  level: 'info',
  exitOnError: false,
  format: format.json(),
  transports: [
    new transports.Console()
  ]
})

describe('test', () => {
  it('should return true', () => {
    logger.log('info', 'Hello simple log!') // this log will be automatically submitted if `DD_AGENTLESS_LOG_SUBMISSION_ENABLED` is defined

    expect(true).to.be.true
  })
})

Plugin Checklist

  • Unit tests.

Copy link

github-actions bot commented Oct 4, 2024

Overall package size

Self size: 7.43 MB
Deduped: 63.2 MB
No deduping: 63.48 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/native-appsec | 8.1.1 | 18.67 MB | 18.68 MB | | @datadog/native-iast-taint-tracking | 3.1.0 | 12.27 MB | 12.28 MB | | @datadog/pprof | 5.3.0 | 9.85 MB | 10.22 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.5.0 | 2.51 MB | 2.59 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 2.0.0 | 898.77 kB | 1.3 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | jsonpath-plus | 9.0.0 | 580.4 kB | 1.03 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 826.22 kB | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | lru-cache | 7.14.0 | 74.95 kB | 74.95 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | int64-buffer | 0.1.10 | 49.18 kB | 49.18 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | path-to-regexp | 0.1.10 | 6.38 kB | 6.38 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |

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

@pr-commenter
Copy link

pr-commenter bot commented Oct 4, 2024

Benchmarks

Benchmark execution time: 2024-10-08 15:29:20

Comparing candidate commit 0d70afb in PR branch juan-fernandez/automatic-log-submission with baseline commit d024777 in branch master.

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

@@ -54,7 +54,7 @@ module.exports = class LogPlugin extends Plugin {
configure (config) {
return super.configure({
...config,
enabled: config.enabled && config.logInjection
enabled: config.enabled && (config.logInjection || config.ciVisAgentlessLogSubmissionEnabled)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we also want to log injection if we're automatically submitting logs from test visibility

@juan-fernandez juan-fernandez changed the title [test visibility] Add option to automatically report logs within tests [test visibility] Add option to automatically report logs within tests when using winston Oct 7, 2024
@juan-fernandez juan-fernandez marked this pull request as ready for review October 7, 2024 12:32
@juan-fernandez juan-fernandez requested review from a team as code owners October 7, 2024 12:32
@@ -18,7 +18,7 @@ const {
} = require('../../packages/dd-trace/src/plugins/util/test')
const { NODE_MAJOR } = require('../../version')

const cucumberVersion = NODE_MAJOR <= 16 ? '9' : '10'
const cucumberVersion = NODE_MAJOR <= 16 ? '9' : 'latest'
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unrelated fix

@juan-fernandez juan-fernandez merged commit 5eea208 into master Oct 9, 2024
197 checks passed
@juan-fernandez juan-fernandez deleted the juan-fernandez/automatic-log-submission branch October 9, 2024 07:22
bengl pushed a commit that referenced this pull request Oct 16, 2024
bengl pushed a commit that referenced this pull request Oct 16, 2024
This was referenced Oct 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants