dd-trace
Version:
Datadog APM tracing client for JavaScript
55 lines (44 loc) • 1.41 kB
JavaScript
const Plugin = require('../../plugins/plugin')
const log = require('../../log')
const { getValueFromEnvSources } = require('../../config/helper')
function getWinstonLogSubmissionParameters (config) {
const { site, service } = config
const defaultParameters = {
host: `http-intake.logs.${site}`,
path: `/api/v2/logs?ddsource=winston&service=${service}`,
ssl: true,
headers: {
'DD-API-KEY': getValueFromEnvSources('DD_API_KEY'),
},
}
if (!getValueFromEnvSources('DD_AGENTLESS_LOG_SUBMISSION_URL')) {
return defaultParameters
}
try {
const url = new URL(getValueFromEnvSources('DD_AGENTLESS_LOG_SUBMISSION_URL'))
return {
host: url.hostname,
port: url.port,
ssl: url.protocol === 'https:',
path: defaultParameters.path,
headers: defaultParameters.headers,
}
} catch {
log.error('Could not parse DD_AGENTLESS_LOG_SUBMISSION_URL')
return defaultParameters
}
}
class LogSubmissionPlugin extends Plugin {
static id = 'log-submission'
constructor (...args) {
super(...args)
this.addSub('ci:log-submission:winston:configure', (httpClass) => {
this.HttpClass = httpClass
})
this.addSub('ci:log-submission:winston:add-transport', (logger) => {
logger.add(new this.HttpClass(getWinstonLogSubmissionParameters(this.config)))
})
}
}
module.exports = LogSubmissionPlugin