Skip to content

Commit 0ab11e2

Browse files
committed
telemetry: add transmit:false flag for logs
1 parent 93d59c4 commit 0ab11e2

File tree

6 files changed

+26
-24
lines changed

6 files changed

+26
-24
lines changed

packages/dd-trace/src/exporters/agent/writer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class Writer extends BaseWriter {
4242
startupLog({ agentError: err })
4343

4444
if (err) {
45-
log.error('Error sending payload to the agent (status code: %s)', err.status, err)
45+
log.error('Error sending payload to the agent (status code: %s)', err.status, { transmit: false }, err)
4646
done()
4747
return
4848
}

packages/dd-trace/src/log/log.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
const { format } = require('util')
44

55
class Log {
6-
constructor (message, args, cause, delegate) {
6+
constructor (message, args, cause, delegate, sendViaTelemetry = true) {
77
this.message = message
88
this.args = args
99
this.cause = cause
1010
this.delegate = delegate
11+
this.sendViaTelemetry = sendViaTelemetry
1112
}
1213

1314
get formatted () {
@@ -22,10 +23,21 @@ class Log {
2223

2324
static parse (...args) {
2425
let message, cause, delegate
26+
let sendViaTelemetry = true
2527

26-
const lastArg = args.at(-1)
27-
if (lastArg && typeof lastArg === 'object' && lastArg.stack) { // lastArg instanceof Error?
28-
cause = args.pop()
28+
{
29+
const lastArg = args.at(-1)
30+
if (lastArg && typeof lastArg === 'object' && lastArg.stack) { // lastArg instanceof Error?
31+
cause = args.pop()
32+
}
33+
}
34+
35+
if (args.length >= 2) {
36+
const meta = args.at(-1)
37+
if (meta && typeof meta === 'object') {
38+
args.pop()
39+
sendViaTelemetry = meta.transmit !== false
40+
}
2941
}
3042

3143
const firstArg = args.shift()
@@ -43,7 +55,7 @@ class Log {
4355
message = String(firstArg)
4456
}
4557

46-
return new Log(message, args, cause, delegate)
58+
return new Log(message, args, cause, delegate, sendViaTelemetry)
4759
}
4860
}
4961

packages/dd-trace/src/remote_config/manager.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ class RemoteConfigManager extends EventEmitter {
153153
if (statusCode === 404) return cb()
154154

155155
if (err) {
156-
log.error('[RC] Error in request', err)
156+
log.error('[RC] Error in request', { transmit: false }, err)
157157
return cb()
158158
}
159159

packages/dd-trace/src/telemetry/logs/log-collector.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function createHash (logEntry) {
2727
}
2828

2929
function isValid (logEntry) {
30-
return logEntry?.level && logEntry.message
30+
return logEntry?.level && logEntry.message && logEntry.transmit !== false
3131
}
3232

3333
const EOL = '\n'

packages/dd-trace/test/exporters/agent/writer.spec.js

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -147,22 +147,6 @@ function describeWriter (protocolVersion) {
147147
})
148148
})
149149

150-
it('should log request errors', done => {
151-
const error = new Error('boom')
152-
error.status = 42
153-
154-
request.yields(error)
155-
156-
encoder.count.returns(1)
157-
writer.flush()
158-
159-
setTimeout(() => {
160-
expect(log.error)
161-
.to.have.been.calledWith('Error sending payload to the agent (status code: %s)', error.status, error)
162-
done()
163-
})
164-
})
165-
166150
it('should update sampling rates', (done) => {
167151
encoder.count.returns(1)
168152
writer.flush(() => {

packages/dd-trace/test/telemetry/logs/log-collector.spec.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ describe('telemetry log collector', () => {
4949
).to.be.false
5050
})
5151

52+
it('should not store logs with transmit flag set to false', () => {
53+
expect(logCollector.add({ message: 'Error 1', level: 'ERROR' })).to.be.true
54+
expect(logCollector.add({ message: 'Error 2', level: 'ERROR', transmit: true })).to.be.true
55+
expect(logCollector.add({ message: 'Error 3', level: 'ERROR', transmit: false })).to.be.false
56+
})
57+
5258
it('should include original message and dd frames', () => {
5359
const ddFrame = `at T (${ddBasePath}path/to/dd/file.js:1:2)`
5460
const stack = new TypeError('Error 1')

0 commit comments

Comments
 (0)