Skip to content

Commit c985421

Browse files
authored
Revert "fix(startup-log): emit immediately after init and send to stderr" (#7478)
This reverts commit 6bef168.
1 parent e80f0f8 commit c985421

File tree

4 files changed

+43
-53
lines changed

4 files changed

+43
-53
lines changed

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

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

55
const request = require('../common/request')
6-
const { logAgentError } = require('../../startup-log')
6+
const { startupLog } = require('../../startup-log')
77
const runtimeMetrics = require('../../runtime_metrics')
88
const log = require('../../log')
99
const tracerVersion = require('../../../../../package.json').version
@@ -30,10 +30,8 @@ class AgentWriter extends BaseWriter {
3030

3131
const { _headers, _lookup, _protocolVersion, _url } = this
3232
makeRequest(_protocolVersion, data, count, _url, _headers, _lookup, (err, res, status) => {
33-
// Log agent connection diagnostic error (only once)
34-
if (status && status !== 404 && status !== 200) {
35-
logAgentError({ status, message: err?.message ?? inspect(err) })
36-
}
33+
// Note that logging will only happen once, regardless of how many times this is called.
34+
startupLog(status !== 404 && status !== 200 ? { status, message: err?.message ?? inspect(err) } : undefined)
3735

3836
if (status) {
3937
runtimeMetrics.increment(`${METRIC_PREFIX}.responses`, true)

packages/dd-trace/src/proxy.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const DatadogTracer = require('./tracer')
66
const getConfig = require('./config')
77
const runtimeMetrics = require('./runtime_metrics')
88
const log = require('./log')
9-
const { setStartupLogPluginManager, startupLog } = require('./startup-log')
9+
const { setStartupLogPluginManager } = require('./startup-log')
1010
const DynamicInstrumentation = require('./debugger')
1111
const telemetry = require('./telemetry')
1212
const nomenclature = require('./service-naming')
@@ -288,8 +288,6 @@ class Tracer extends NoopProxy {
288288
this._pluginManager.configure(config)
289289
DynamicInstrumentation.configure(config)
290290
setStartupLogPluginManager(this._pluginManager)
291-
// Emit startup log immediately after tracer is fully initialized
292-
startupLog()
293291
}
294292
}
295293

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

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,38 @@ const os = require('os')
44
const { inspect } = require('util')
55
const tracerVersion = require('../../../package.json').version
66
const { getAgentUrl } = require('./agent/url')
7-
const { warn } = require('./log/writer')
7+
const { info, warn } = require('./log/writer')
88

99
const errors = {}
1010
let config
1111
let pluginManager
1212
/** @type {import('./sampling_rule')[]} */
1313
let samplingRules = []
14-
let startupLogRan = false
15-
let agentErrorLogged = false
14+
let alreadyRan = false
1615

1716
/**
18-
* Logs the tracer configuration on startup
17+
* @param {{ status: number, message: string } } [agentError]
1918
*/
20-
function startupLog () {
21-
if (startupLogRan || !config || !config.startupLogs || !pluginManager) {
19+
function startupLog (agentError) {
20+
if (alreadyRan || !config || !config.startupLogs || !pluginManager) {
2221
return
2322
}
2423

25-
startupLogRan = true
24+
alreadyRan = true
2625

2726
const out = tracerInfo()
28-
warn('DATADOG TRACER CONFIGURATION - ' + out)
29-
}
3027

31-
/**
32-
* Logs a diagnostic error when the agent connection fails
33-
* @param {{ status: number, message: string }} agentError
34-
*/
35-
function logAgentError (agentError) {
36-
if (agentErrorLogged || !config || !config.startupLogs) {
37-
return
28+
if (agentError) {
29+
out.agent_error = agentError.message
3830
}
3931

40-
agentErrorLogged = true
41-
42-
warn('DATADOG TRACER DIAGNOSTIC - Agent Error: ' + agentError.message)
43-
errors.agentError = {
44-
code: agentError.status,
45-
message: `Agent Error: ${agentError.message}`,
32+
info('DATADOG TRACER CONFIGURATION - ' + out)
33+
if (agentError) {
34+
warn('DATADOG TRACER DIAGNOSTIC - Agent Error: ' + agentError.message)
35+
errors.agentError = {
36+
code: agentError.status,
37+
message: `Agent Error: ${agentError.message}`,
38+
}
4639
}
4740
}
4841

@@ -111,7 +104,6 @@ function setSamplingRules (theRules) {
111104

112105
module.exports = {
113106
startupLog,
114-
logAgentError,
115107
setStartupLogConfig,
116108
setStartupLogPluginManager,
117109
setSamplingRules,

packages/dd-trace/test/startup-log.spec.js

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ describe('startup logging', () => {
1717
let tracerInfoMethod
1818

1919
before(() => {
20+
sinon.stub(console, 'info')
2021
sinon.stub(console, 'warn')
2122
delete require.cache[require.resolve('../src/startup-log')]
2223
const {
2324
setStartupLogConfig,
2425
setStartupLogPluginManager,
2526
setSamplingRules,
2627
startupLog,
27-
logAgentError,
2828
tracerInfo,
2929
} = require('../src/startup-log')
3030
tracerInfoMethod = tracerInfo
@@ -60,11 +60,13 @@ describe('startup logging', () => {
6060
])
6161
// Use sinon's stub instance directly to avoid type errors
6262
// eslint-disable-next-line no-console
63+
const infoStub = /** @type {sinon.SinonStub} */ (console.info)
64+
// eslint-disable-next-line no-console
6365
const warnStub = /** @type {sinon.SinonStub} */ (console.warn)
64-
startupLog()
65-
logAgentError({ status: 500, message: 'Error: fake error' })
66-
firstStderrCall = warnStub.firstCall
67-
secondStderrCall = warnStub.secondCall
66+
startupLog({ message: 'Error: fake error' })
67+
firstStderrCall = infoStub.firstCall
68+
secondStderrCall = warnStub.firstCall
69+
infoStub.restore()
6870
warnStub.restore()
6971
})
7072

@@ -101,7 +103,7 @@ describe('startup logging', () => {
101103
})
102104
})
103105

104-
it('logAgentError should correctly output the diagnostic message separately', () => {
106+
it('startupLog should correctly also output the diagnostic message', () => {
105107
assert.strictEqual(secondStderrCall.args[0], 'DATADOG TRACER DIAGNOSTIC - Agent Error: Error: fake error')
106108
})
107109
})
@@ -112,7 +114,7 @@ describe('data_streams_enabled', () => {
112114
})
113115

114116
it('should be true when env var is true and config is unset', () => {
115-
sinon.stub(console, 'warn')
117+
sinon.stub(console, 'info')
116118
delete require.cache[require.resolve('../src/startup-log')]
117119
const {
118120
setStartupLogConfig,
@@ -125,14 +127,14 @@ describe('data_streams_enabled', () => {
125127
setStartupLogPluginManager({ _pluginsByName: {} })
126128
startupLog()
127129
/* eslint-disable-next-line no-console */
128-
const warnStub = /** @type {sinon.SinonStub} */ (console.warn)
129-
const logObj = JSON.parse(warnStub.firstCall.args[0].replace('DATADOG TRACER CONFIGURATION - ', ''))
130-
warnStub.restore()
130+
const infoStub = /** @type {sinon.SinonStub} */ (console.info)
131+
const logObj = JSON.parse(infoStub.firstCall.args[0].replace('DATADOG TRACER CONFIGURATION - ', ''))
132+
infoStub.restore()
131133
assert.strictEqual(logObj.data_streams_enabled, true)
132134
})
133135

134136
it('should be true when env var is not set and config is true', () => {
135-
sinon.stub(console, 'warn')
137+
sinon.stub(console, 'info')
136138
delete require.cache[require.resolve('../src/startup-log')]
137139
const {
138140
setStartupLogConfig,
@@ -145,14 +147,14 @@ describe('data_streams_enabled', () => {
145147
setStartupLogPluginManager({ _pluginsByName: {} })
146148
startupLog()
147149
/* eslint-disable-next-line no-console */
148-
const warnStub = /** @type {sinon.SinonStub} */ (console.warn)
149-
const logObj = JSON.parse(warnStub.firstCall.args[0].replace('DATADOG TRACER CONFIGURATION - ', ''))
150-
warnStub.restore()
150+
const infoStub = /** @type {sinon.SinonStub} */ (console.info)
151+
const logObj = JSON.parse(infoStub.firstCall.args[0].replace('DATADOG TRACER CONFIGURATION - ', ''))
152+
infoStub.restore()
151153
assert.strictEqual(logObj.data_streams_enabled, true)
152154
})
153155

154156
it('should be false when env var is true but config is false', () => {
155-
sinon.stub(console, 'warn')
157+
sinon.stub(console, 'info')
156158
delete require.cache[require.resolve('../src/startup-log')]
157159
const {
158160
setStartupLogConfig,
@@ -165,9 +167,9 @@ describe('data_streams_enabled', () => {
165167
setStartupLogPluginManager({ _pluginsByName: {} })
166168
startupLog()
167169
/* eslint-disable-next-line no-console */
168-
const warnStub = /** @type {sinon.SinonStub} */ (console.warn)
169-
const logObj = JSON.parse(warnStub.firstCall.args[0].replace('DATADOG TRACER CONFIGURATION - ', ''))
170-
warnStub.restore()
170+
const infoStub = /** @type {sinon.SinonStub} */ (console.info)
171+
const logObj = JSON.parse(infoStub.firstCall.args[0].replace('DATADOG TRACER CONFIGURATION - ', ''))
172+
infoStub.restore()
171173
assert.strictEqual(logObj.data_streams_enabled, false)
172174
})
173175
})
@@ -181,7 +183,7 @@ describe('profiling_enabled', () => {
181183
['auto', true],
182184
['true', true],
183185
].forEach(([envVar, expected]) => {
184-
sinon.stub(console, 'warn')
186+
sinon.stub(console, 'info')
185187
delete require.cache[require.resolve('../src/startup-log')]
186188
const {
187189
setStartupLogConfig,
@@ -194,9 +196,9 @@ describe('profiling_enabled', () => {
194196
setStartupLogPluginManager({ _pluginsByName: {} })
195197
startupLog()
196198
/* eslint-disable-next-line no-console */
197-
const warnStub = /** @type {sinon.SinonStub} */ (console.warn)
198-
const logObj = JSON.parse(warnStub.firstCall.args[0].replace('DATADOG TRACER CONFIGURATION - ', ''))
199-
warnStub.restore()
199+
const infoStub = /** @type {sinon.SinonStub} */ (console.info)
200+
const logObj = JSON.parse(infoStub.firstCall.args[0].replace('DATADOG TRACER CONFIGURATION - ', ''))
201+
infoStub.restore()
200202
assert.strictEqual(logObj.profiling_enabled, expected)
201203
})
202204
})

0 commit comments

Comments
 (0)