dd-trace
Version:
Datadog APM tracing client for JavaScript
54 lines (43 loc) • 1.31 kB
JavaScript
const Plugin = require('../../plugins/plugin')
const log = require('../../log')
function getWinstonLogSubmissionParameters (config) {
const { site, service, apiKey, DD_AGENTLESS_LOG_SUBMISSION_URL } = config
const defaultParameters = {
host: `http-intake.logs.${site}`,
path: `/api/v2/logs?ddsource=winston&service=${service}`,
ssl: true,
headers: {
'DD-API-KEY': apiKey,
},
}
if (!DD_AGENTLESS_LOG_SUBMISSION_URL) {
return defaultParameters
}
try {
const url = new URL(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