UNPKG

dd-trace

Version:

Datadog APM tracing client for JavaScript

54 lines (43 loc) 1.31 kB
'use strict' 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