@opentelemetry/instrumentation-winston 0.40.0 → 0.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -19,6 +19,7 @@ exports.WinstonInstrumentation = void 0;
|
|
|
19
19
|
const api_1 = require("@opentelemetry/api");
|
|
20
20
|
const api_logs_1 = require("@opentelemetry/api-logs");
|
|
21
21
|
const instrumentation_1 = require("@opentelemetry/instrumentation");
|
|
22
|
+
/** @knipignore */
|
|
22
23
|
const version_1 = require("./version");
|
|
23
24
|
const winston3Versions = ['>=3 <4'];
|
|
24
25
|
const winstonPre3Versions = ['>=1 <3'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { context, trace, isSpanContextValid, Span } from '@opentelemetry/api';\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport type { WinstonInstrumentationConfig } from './types';\nimport type {\n Winston2LoggerModule,\n Winston2LogMethod,\n Winston3ConfigureMethod,\n Winston3LogMethod,\n Winston3Logger,\n} from './internal-types';\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst winston3Versions = ['>=3 <4'];\nconst winstonPre3Versions = ['>=1 <3'];\n\nexport class WinstonInstrumentation extends InstrumentationBase<WinstonInstrumentationConfig> {\n constructor(config: WinstonInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n protected init() {\n const winstons3instrumentationNodeModuleDefinition =\n new InstrumentationNodeModuleDefinition(\n 'winston',\n winston3Versions,\n moduleExports => moduleExports,\n () => {},\n [\n new InstrumentationNodeModuleFile(\n 'winston/lib/winston/logger.js',\n winston3Versions,\n (logger: Winston3Logger) => {\n if (isWrapped(logger.prototype['write'])) {\n this._unwrap(logger.prototype, 'write');\n }\n this._wrap(logger.prototype, 'write', this._getPatchedWrite());\n\n // Wrap configure\n if (isWrapped(logger.prototype['configure'])) {\n this._unwrap(logger.prototype, 'configure');\n }\n this._wrap(\n logger.prototype,\n 'configure',\n this._getPatchedConfigure()\n );\n\n return logger;\n },\n (logger: Winston3Logger) => {\n if (logger === undefined) return;\n this._unwrap(logger.prototype, 'write');\n this._unwrap(logger.prototype, 'configure');\n }\n ),\n ]\n );\n\n const winstons2instrumentationNodeModuleDefinition =\n new InstrumentationNodeModuleDefinition(\n 'winston',\n winstonPre3Versions,\n moduleExports => moduleExports,\n () => {},\n [\n new InstrumentationNodeModuleFile(\n 'winston/lib/winston/logger.js',\n winstonPre3Versions,\n (fileExports: Winston2LoggerModule) => {\n const proto = fileExports.Logger.prototype;\n\n if (isWrapped(proto.log)) {\n this._unwrap(proto, 'log');\n }\n this._wrap(proto, 'log', this._getPatchedLog());\n\n return fileExports;\n },\n (fileExports: Winston2LoggerModule) => {\n if (fileExports === undefined) return;\n this._unwrap(fileExports.Logger.prototype, 'log');\n }\n ),\n ]\n );\n return [\n winstons3instrumentationNodeModuleDefinition,\n winstons2instrumentationNodeModuleDefinition,\n ];\n }\n\n private _callHook(span: Span, record: Record<string, string>) {\n const { logHook } = this.getConfig();\n\n if (!logHook) {\n return;\n }\n\n safeExecuteInTheMiddle(\n () => logHook(span, record),\n err => {\n if (err) {\n this._diag.error('error calling logHook', err);\n }\n },\n true\n );\n }\n\n private _getPatchedWrite() {\n return (original: Winston3LogMethod) => {\n const instrumentation = this;\n return function patchedWrite(\n this: never,\n ...args: Parameters<typeof original>\n ) {\n const record = args[0];\n instrumentation._handleLogCorrelation(record);\n return original.apply(this, args);\n };\n };\n }\n\n private _getPatchedLog() {\n return (original: Winston2LogMethod) => {\n const instrumentation = this;\n return function patchedLog(\n this: never,\n ...args: Parameters<typeof original>\n ) {\n const record: Record<string, any> = {};\n instrumentation._handleLogCorrelation(record);\n // Inject in metadata argument\n let isDataInjected = false;\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'object') {\n args[i] = Object.assign(args[i], record);\n isDataInjected = true;\n break;\n }\n }\n if (!isDataInjected) {\n const insertAt =\n typeof args[args.length - 1] === 'function'\n ? args.length - 1\n : args.length;\n\n args.splice(insertAt, 0, record);\n }\n\n return original.apply(this, args);\n };\n };\n }\n\n private _getPatchedConfigure() {\n return (original: Winston3ConfigureMethod) => {\n const instrumentation = this;\n return function patchedConfigure(\n this: never,\n ...args: Parameters<typeof original>\n ) {\n const config = instrumentation.getConfig();\n if (!config.disableLogSending) {\n if (args && args.length > 0) {\n // Try to load Winston transport\n try {\n const {\n OpenTelemetryTransportV3,\n } = require('@opentelemetry/winston-transport');\n const originalTransports = args[0].transports;\n let newTransports = Array.isArray(originalTransports)\n ? originalTransports\n : [];\n let transportOptions = {};\n if (config.logSeverity) {\n const winstonLevel = instrumentation._winstonLevelFromSeverity(\n config.logSeverity,\n args[0].levels\n );\n transportOptions = { level: winstonLevel };\n }\n const openTelemetryTransport = new OpenTelemetryTransportV3(\n transportOptions\n );\n if (originalTransports && !Array.isArray(originalTransports)) {\n newTransports = [originalTransports];\n }\n newTransports.push(openTelemetryTransport);\n args[0].transports = newTransports;\n } catch (err) {\n instrumentation._diag.warn(\n '@opentelemetry/winston-transport is not available, log records will not be automatically sent.'\n );\n }\n }\n }\n return original.apply(this, args);\n };\n };\n }\n\n private _handleLogCorrelation(record: Record<string, string>) {\n if (!this.getConfig().disableLogCorrelation) {\n const span = trace.getSpan(context.active());\n if (span) {\n const spanContext = span.spanContext();\n if (isSpanContextValid(spanContext)) {\n const fields = {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n trace_flags: `0${spanContext.traceFlags.toString(16)}`,\n };\n const enhancedRecord = Object.assign(record, fields);\n this._callHook(span, enhancedRecord);\n return enhancedRecord;\n }\n }\n }\n return record;\n }\n\n private _winstonLevelFromSeverity(\n severity: SeverityNumber,\n winstonLevels: { [key: string]: number } | undefined\n ): string | undefined {\n if (winstonLevels) {\n if (isNpmLevels(winstonLevels)) {\n if (severity >= SeverityNumber.ERROR) {\n return 'error';\n } else if (severity >= SeverityNumber.WARN) {\n return 'warn';\n } else if (severity >= SeverityNumber.INFO) {\n return 'info';\n } else if (severity >= SeverityNumber.DEBUG3) {\n return 'http';\n } else if (severity >= SeverityNumber.DEBUG2) {\n return 'verbose';\n } else if (severity >= SeverityNumber.DEBUG) {\n return 'debug';\n } else if (severity >= SeverityNumber.TRACE) {\n return 'silly';\n }\n } else if (isCliLevels(winstonLevels)) {\n if (severity >= SeverityNumber.ERROR) {\n return 'error';\n } else if (severity >= SeverityNumber.WARN) {\n return 'warn';\n } else if (severity >= SeverityNumber.INFO3) {\n return 'help';\n } else if (severity >= SeverityNumber.INFO2) {\n return 'data';\n } else if (severity >= SeverityNumber.INFO) {\n return 'info';\n } else if (severity >= SeverityNumber.DEBUG) {\n return 'debug';\n } else if (severity >= SeverityNumber.TRACE4) {\n return 'prompt';\n } else if (severity >= SeverityNumber.TRACE3) {\n return 'verbose';\n } else if (severity >= SeverityNumber.TRACE2) {\n return 'input';\n } else if (severity >= SeverityNumber.TRACE) {\n return 'silly';\n }\n } else if (isSyslogLevels(winstonLevels)) {\n if (severity >= SeverityNumber.FATAL2) {\n return 'emerg';\n } else if (severity >= SeverityNumber.FATAL) {\n return 'alert';\n } else if (severity >= SeverityNumber.ERROR2) {\n return 'crit';\n } else if (severity >= SeverityNumber.ERROR) {\n return 'error';\n } else if (severity >= SeverityNumber.WARN) {\n return 'warning';\n } else if (severity >= SeverityNumber.INFO2) {\n return 'notice';\n } else if (severity >= SeverityNumber.INFO) {\n return 'info';\n } else if (severity >= SeverityNumber.TRACE) {\n return 'debug';\n }\n }\n // Unknown level\n this._diag.warn(\n 'failed to configure severity with existing winston levels'\n );\n }\n\n function isCliLevels(arg: any): boolean {\n return (\n arg &&\n arg.error !== undefined &&\n arg.warn &&\n arg.help &&\n arg.data &&\n arg.info &&\n arg.debug &&\n arg.prompt &&\n arg.verbose &&\n arg.input &&\n arg.silly\n );\n }\n\n function isNpmLevels(arg: any): boolean {\n return (\n arg &&\n arg.error !== undefined &&\n arg.warn &&\n arg.info &&\n arg.http &&\n arg.verbose &&\n arg.debug &&\n arg.silly\n );\n }\n\n function isSyslogLevels(arg: any): boolean {\n return (\n arg &&\n arg.emerg !== undefined &&\n arg.alert &&\n arg.crit &&\n arg.error &&\n arg.warning &&\n arg.notice &&\n arg.info &&\n arg.debug\n );\n }\n\n return;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA8E;AAC9E,sDAAyD;AACzD,oEAMwC;AASxC,kBAAkB;AAClB,uCAA0D;AAE1D,MAAM,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,CAAC,CAAC;AAEvC,MAAa,sBAAuB,SAAQ,qCAAiD;IAC3F,YAAY,SAAuC,EAAE;QACnD,KAAK,CAAC,sBAAY,EAAE,yBAAe,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAES,IAAI;QACZ,MAAM,4CAA4C,GAChD,IAAI,qDAAmC,CACrC,SAAS,EACT,gBAAgB,EAChB,aAAa,CAAC,EAAE,CAAC,aAAa,EAC9B,GAAG,EAAE,GAAE,CAAC,EACR;YACE,IAAI,+CAA6B,CAC/B,+BAA+B,EAC/B,gBAAgB,EAChB,CAAC,MAAsB,EAAE,EAAE;gBACzB,IAAI,IAAA,2BAAS,EAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE;oBACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;iBACzC;gBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBAE/D,iBAAiB;gBACjB,IAAI,IAAA,2BAAS,EAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE;oBAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;iBAC7C;gBACD,IAAI,CAAC,KAAK,CACR,MAAM,CAAC,SAAS,EAChB,WAAW,EACX,IAAI,CAAC,oBAAoB,EAAE,CAC5B,CAAC;gBAEF,OAAO,MAAM,CAAC;YAChB,CAAC,EACD,CAAC,MAAsB,EAAE,EAAE;gBACzB,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO;gBACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAC9C,CAAC,CACF;SACF,CACF,CAAC;QAEJ,MAAM,4CAA4C,GAChD,IAAI,qDAAmC,CACrC,SAAS,EACT,mBAAmB,EACnB,aAAa,CAAC,EAAE,CAAC,aAAa,EAC9B,GAAG,EAAE,GAAE,CAAC,EACR;YACE,IAAI,+CAA6B,CAC/B,+BAA+B,EAC/B,mBAAmB,EACnB,CAAC,WAAiC,EAAE,EAAE;gBACpC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;gBAE3C,IAAI,IAAA,2BAAS,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACxB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;iBAC5B;gBACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;gBAEhD,OAAO,WAAW,CAAC;YACrB,CAAC,EACD,CAAC,WAAiC,EAAE,EAAE;gBACpC,IAAI,WAAW,KAAK,SAAS;oBAAE,OAAO;gBACtC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC,CACF;SACF,CACF,CAAC;QACJ,OAAO;YACL,4CAA4C;YAC5C,4CAA4C;SAC7C,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,IAAU,EAAE,MAA8B;QAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAErC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QAED,IAAA,wCAAsB,EACpB,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAC3B,GAAG,CAAC,EAAE;YACJ,IAAI,GAAG,EAAE;gBACP,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;aAChD;QACH,CAAC,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAEO,gBAAgB;QACtB,OAAO,CAAC,QAA2B,EAAE,EAAE;YACrC,MAAM,eAAe,GAAG,IAAI,CAAC;YAC7B,OAAO,SAAS,YAAY,CAE1B,GAAG,IAAiC;gBAEpC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvB,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAC9C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,OAAO,CAAC,QAA2B,EAAE,EAAE;YACrC,MAAM,eAAe,GAAG,IAAI,CAAC;YAC7B,OAAO,SAAS,UAAU,CAExB,GAAG,IAAiC;gBAEpC,MAAM,MAAM,GAAwB,EAAE,CAAC;gBACvC,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAC9C,8BAA8B;gBAC9B,IAAI,cAAc,GAAG,KAAK,CAAC;gBAC3B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBACzC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;wBAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;wBACzC,cAAc,GAAG,IAAI,CAAC;wBACtB,MAAM;qBACP;iBACF;gBACD,IAAI,CAAC,cAAc,EAAE;oBACnB,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,UAAU;wBACzC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;wBACjB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;oBAElB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;iBAClC;gBAED,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAC1B,OAAO,CAAC,QAAiC,EAAE,EAAE;YAC3C,MAAM,eAAe,GAAG,IAAI,CAAC;YAC7B,OAAO,SAAS,gBAAgB,CAE9B,GAAG,IAAiC;gBAEpC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;oBAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC3B,gCAAgC;wBAChC,IAAI;4BACF,MAAM,EACJ,wBAAwB,GACzB,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;4BAChD,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;4BAC9C,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;gCACnD,CAAC,CAAC,kBAAkB;gCACpB,CAAC,CAAC,EAAE,CAAC;4BACP,IAAI,gBAAgB,GAAG,EAAE,CAAC;4BAC1B,IAAI,MAAM,CAAC,WAAW,EAAE;gCACtB,MAAM,YAAY,GAAG,eAAe,CAAC,yBAAyB,CAC5D,MAAM,CAAC,WAAW,EAClB,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CACf,CAAC;gCACF,gBAAgB,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;6BAC5C;4BACD,MAAM,sBAAsB,GAAG,IAAI,wBAAwB,CACzD,gBAAgB,CACjB,CAAC;4BACF,IAAI,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;gCAC5D,aAAa,GAAG,CAAC,kBAAkB,CAAC,CAAC;6BACtC;4BACD,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;4BAC3C,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,aAAa,CAAC;yBACpC;wBAAC,OAAO,GAAG,EAAE;4BACZ,eAAe,CAAC,KAAK,CAAC,IAAI,CACxB,gGAAgG,CACjG,CAAC;yBACH;qBACF;iBACF;gBACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,MAA8B;QAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,qBAAqB,EAAE;YAC3C,MAAM,IAAI,GAAG,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7C,IAAI,IAAI,EAAE;gBACR,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvC,IAAI,IAAA,wBAAkB,EAAC,WAAW,CAAC,EAAE;oBACnC,MAAM,MAAM,GAAG;wBACb,QAAQ,EAAE,WAAW,CAAC,OAAO;wBAC7B,OAAO,EAAE,WAAW,CAAC,MAAM;wBAC3B,WAAW,EAAE,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;qBACvD,CAAC;oBACF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBACrD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;oBACrC,OAAO,cAAc,CAAC;iBACvB;aACF;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,yBAAyB,CAC/B,QAAwB,EACxB,aAAoD;QAEpD,IAAI,aAAa,EAAE;YACjB,IAAI,WAAW,CAAC,aAAa,CAAC,EAAE;gBAC9B,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBACpC,OAAO,OAAO,CAAC;iBAChB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,IAAI,EAAE;oBAC1C,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,IAAI,EAAE;oBAC1C,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,MAAM,EAAE;oBAC5C,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,MAAM,EAAE;oBAC5C,OAAO,SAAS,CAAC;iBAClB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBAC3C,OAAO,OAAO,CAAC;iBAChB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBAC3C,OAAO,OAAO,CAAC;iBAChB;aACF;iBAAM,IAAI,WAAW,CAAC,aAAa,CAAC,EAAE;gBACrC,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBACpC,OAAO,OAAO,CAAC;iBAChB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,IAAI,EAAE;oBAC1C,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBAC3C,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBAC3C,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,IAAI,EAAE;oBAC1C,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBAC3C,OAAO,OAAO,CAAC;iBAChB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,MAAM,EAAE;oBAC5C,OAAO,QAAQ,CAAC;iBACjB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,MAAM,EAAE;oBAC5C,OAAO,SAAS,CAAC;iBAClB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,MAAM,EAAE;oBAC5C,OAAO,OAAO,CAAC;iBAChB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBAC3C,OAAO,OAAO,CAAC;iBAChB;aACF;iBAAM,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE;gBACxC,IAAI,QAAQ,IAAI,yBAAc,CAAC,MAAM,EAAE;oBACrC,OAAO,OAAO,CAAC;iBAChB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBAC3C,OAAO,OAAO,CAAC;iBAChB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,MAAM,EAAE;oBAC5C,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBAC3C,OAAO,OAAO,CAAC;iBAChB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,IAAI,EAAE;oBAC1C,OAAO,SAAS,CAAC;iBAClB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBAC3C,OAAO,QAAQ,CAAC;iBACjB;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,IAAI,EAAE;oBAC1C,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,QAAQ,IAAI,yBAAc,CAAC,KAAK,EAAE;oBAC3C,OAAO,OAAO,CAAC;iBAChB;aACF;YACD,gBAAgB;YAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,2DAA2D,CAC5D,CAAC;SACH;QAED,SAAS,WAAW,CAAC,GAAQ;YAC3B,OAAO,CACL,GAAG;gBACH,GAAG,CAAC,KAAK,KAAK,SAAS;gBACvB,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,KAAK;gBACT,GAAG,CAAC,MAAM;gBACV,GAAG,CAAC,OAAO;gBACX,GAAG,CAAC,KAAK;gBACT,GAAG,CAAC,KAAK,CACV,CAAC;QACJ,CAAC;QAED,SAAS,WAAW,CAAC,GAAQ;YAC3B,OAAO,CACL,GAAG;gBACH,GAAG,CAAC,KAAK,KAAK,SAAS;gBACvB,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,OAAO;gBACX,GAAG,CAAC,KAAK;gBACT,GAAG,CAAC,KAAK,CACV,CAAC;QACJ,CAAC;QAED,SAAS,cAAc,CAAC,GAAQ;YAC9B,OAAO,CACL,GAAG;gBACH,GAAG,CAAC,KAAK,KAAK,SAAS;gBACvB,GAAG,CAAC,KAAK;gBACT,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,KAAK;gBACT,GAAG,CAAC,OAAO;gBACX,GAAG,CAAC,MAAM;gBACV,GAAG,CAAC,IAAI;gBACR,GAAG,CAAC,KAAK,CACV,CAAC;QACJ,CAAC;QAED,OAAO;IACT,CAAC;CACF;AAhUD,wDAgUC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { context, trace, isSpanContextValid, Span } from '@opentelemetry/api';\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport type { WinstonInstrumentationConfig } from './types';\nimport type {\n Winston2LoggerModule,\n Winston2LogMethod,\n Winston3ConfigureMethod,\n Winston3LogMethod,\n Winston3Logger,\n} from './internal-types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst winston3Versions = ['>=3 <4'];\nconst winstonPre3Versions = ['>=1 <3'];\n\nexport class WinstonInstrumentation extends InstrumentationBase<WinstonInstrumentationConfig> {\n constructor(config: WinstonInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n protected init() {\n const winstons3instrumentationNodeModuleDefinition =\n new InstrumentationNodeModuleDefinition(\n 'winston',\n winston3Versions,\n moduleExports => moduleExports,\n () => {},\n [\n new InstrumentationNodeModuleFile(\n 'winston/lib/winston/logger.js',\n winston3Versions,\n (logger: Winston3Logger) => {\n if (isWrapped(logger.prototype['write'])) {\n this._unwrap(logger.prototype, 'write');\n }\n this._wrap(logger.prototype, 'write', this._getPatchedWrite());\n\n // Wrap configure\n if (isWrapped(logger.prototype['configure'])) {\n this._unwrap(logger.prototype, 'configure');\n }\n this._wrap(\n logger.prototype,\n 'configure',\n this._getPatchedConfigure()\n );\n\n return logger;\n },\n (logger: Winston3Logger) => {\n if (logger === undefined) return;\n this._unwrap(logger.prototype, 'write');\n this._unwrap(logger.prototype, 'configure');\n }\n ),\n ]\n );\n\n const winstons2instrumentationNodeModuleDefinition =\n new InstrumentationNodeModuleDefinition(\n 'winston',\n winstonPre3Versions,\n moduleExports => moduleExports,\n () => {},\n [\n new InstrumentationNodeModuleFile(\n 'winston/lib/winston/logger.js',\n winstonPre3Versions,\n (fileExports: Winston2LoggerModule) => {\n const proto = fileExports.Logger.prototype;\n\n if (isWrapped(proto.log)) {\n this._unwrap(proto, 'log');\n }\n this._wrap(proto, 'log', this._getPatchedLog());\n\n return fileExports;\n },\n (fileExports: Winston2LoggerModule) => {\n if (fileExports === undefined) return;\n this._unwrap(fileExports.Logger.prototype, 'log');\n }\n ),\n ]\n );\n return [\n winstons3instrumentationNodeModuleDefinition,\n winstons2instrumentationNodeModuleDefinition,\n ];\n }\n\n private _callHook(span: Span, record: Record<string, string>) {\n const { logHook } = this.getConfig();\n\n if (!logHook) {\n return;\n }\n\n safeExecuteInTheMiddle(\n () => logHook(span, record),\n err => {\n if (err) {\n this._diag.error('error calling logHook', err);\n }\n },\n true\n );\n }\n\n private _getPatchedWrite() {\n return (original: Winston3LogMethod) => {\n const instrumentation = this;\n return function patchedWrite(\n this: never,\n ...args: Parameters<typeof original>\n ) {\n const record = args[0];\n instrumentation._handleLogCorrelation(record);\n return original.apply(this, args);\n };\n };\n }\n\n private _getPatchedLog() {\n return (original: Winston2LogMethod) => {\n const instrumentation = this;\n return function patchedLog(\n this: never,\n ...args: Parameters<typeof original>\n ) {\n const record: Record<string, any> = {};\n instrumentation._handleLogCorrelation(record);\n // Inject in metadata argument\n let isDataInjected = false;\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'object') {\n args[i] = Object.assign(args[i], record);\n isDataInjected = true;\n break;\n }\n }\n if (!isDataInjected) {\n const insertAt =\n typeof args[args.length - 1] === 'function'\n ? args.length - 1\n : args.length;\n\n args.splice(insertAt, 0, record);\n }\n\n return original.apply(this, args);\n };\n };\n }\n\n private _getPatchedConfigure() {\n return (original: Winston3ConfigureMethod) => {\n const instrumentation = this;\n return function patchedConfigure(\n this: never,\n ...args: Parameters<typeof original>\n ) {\n const config = instrumentation.getConfig();\n if (!config.disableLogSending) {\n if (args && args.length > 0) {\n // Try to load Winston transport\n try {\n const {\n OpenTelemetryTransportV3,\n } = require('@opentelemetry/winston-transport');\n const originalTransports = args[0].transports;\n let newTransports = Array.isArray(originalTransports)\n ? originalTransports\n : [];\n let transportOptions = {};\n if (config.logSeverity) {\n const winstonLevel = instrumentation._winstonLevelFromSeverity(\n config.logSeverity,\n args[0].levels\n );\n transportOptions = { level: winstonLevel };\n }\n const openTelemetryTransport = new OpenTelemetryTransportV3(\n transportOptions\n );\n if (originalTransports && !Array.isArray(originalTransports)) {\n newTransports = [originalTransports];\n }\n newTransports.push(openTelemetryTransport);\n args[0].transports = newTransports;\n } catch (err) {\n instrumentation._diag.warn(\n '@opentelemetry/winston-transport is not available, log records will not be automatically sent.'\n );\n }\n }\n }\n return original.apply(this, args);\n };\n };\n }\n\n private _handleLogCorrelation(record: Record<string, string>) {\n if (!this.getConfig().disableLogCorrelation) {\n const span = trace.getSpan(context.active());\n if (span) {\n const spanContext = span.spanContext();\n if (isSpanContextValid(spanContext)) {\n const fields = {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n trace_flags: `0${spanContext.traceFlags.toString(16)}`,\n };\n const enhancedRecord = Object.assign(record, fields);\n this._callHook(span, enhancedRecord);\n return enhancedRecord;\n }\n }\n }\n return record;\n }\n\n private _winstonLevelFromSeverity(\n severity: SeverityNumber,\n winstonLevels: { [key: string]: number } | undefined\n ): string | undefined {\n if (winstonLevels) {\n if (isNpmLevels(winstonLevels)) {\n if (severity >= SeverityNumber.ERROR) {\n return 'error';\n } else if (severity >= SeverityNumber.WARN) {\n return 'warn';\n } else if (severity >= SeverityNumber.INFO) {\n return 'info';\n } else if (severity >= SeverityNumber.DEBUG3) {\n return 'http';\n } else if (severity >= SeverityNumber.DEBUG2) {\n return 'verbose';\n } else if (severity >= SeverityNumber.DEBUG) {\n return 'debug';\n } else if (severity >= SeverityNumber.TRACE) {\n return 'silly';\n }\n } else if (isCliLevels(winstonLevels)) {\n if (severity >= SeverityNumber.ERROR) {\n return 'error';\n } else if (severity >= SeverityNumber.WARN) {\n return 'warn';\n } else if (severity >= SeverityNumber.INFO3) {\n return 'help';\n } else if (severity >= SeverityNumber.INFO2) {\n return 'data';\n } else if (severity >= SeverityNumber.INFO) {\n return 'info';\n } else if (severity >= SeverityNumber.DEBUG) {\n return 'debug';\n } else if (severity >= SeverityNumber.TRACE4) {\n return 'prompt';\n } else if (severity >= SeverityNumber.TRACE3) {\n return 'verbose';\n } else if (severity >= SeverityNumber.TRACE2) {\n return 'input';\n } else if (severity >= SeverityNumber.TRACE) {\n return 'silly';\n }\n } else if (isSyslogLevels(winstonLevels)) {\n if (severity >= SeverityNumber.FATAL2) {\n return 'emerg';\n } else if (severity >= SeverityNumber.FATAL) {\n return 'alert';\n } else if (severity >= SeverityNumber.ERROR2) {\n return 'crit';\n } else if (severity >= SeverityNumber.ERROR) {\n return 'error';\n } else if (severity >= SeverityNumber.WARN) {\n return 'warning';\n } else if (severity >= SeverityNumber.INFO2) {\n return 'notice';\n } else if (severity >= SeverityNumber.INFO) {\n return 'info';\n } else if (severity >= SeverityNumber.TRACE) {\n return 'debug';\n }\n }\n // Unknown level\n this._diag.warn(\n 'failed to configure severity with existing winston levels'\n );\n }\n\n function isCliLevels(arg: any): boolean {\n return (\n arg &&\n arg.error !== undefined &&\n arg.warn &&\n arg.help &&\n arg.data &&\n arg.info &&\n arg.debug &&\n arg.prompt &&\n arg.verbose &&\n arg.input &&\n arg.silly\n );\n }\n\n function isNpmLevels(arg: any): boolean {\n return (\n arg &&\n arg.error !== undefined &&\n arg.warn &&\n arg.info &&\n arg.http &&\n arg.verbose &&\n arg.debug &&\n arg.silly\n );\n }\n\n function isSyslogLevels(arg: any): boolean {\n return (\n arg &&\n arg.emerg !== undefined &&\n arg.alert &&\n arg.crit &&\n arg.error &&\n arg.warning &&\n arg.notice &&\n arg.info &&\n arg.debug\n );\n }\n\n return;\n }\n}\n"]}
|
package/build/src/version.d.ts
CHANGED
package/build/src/version.js
CHANGED
|
@@ -17,6 +17,6 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;
|
|
19
19
|
// this is autogenerated file, see scripts/version-update.js
|
|
20
|
-
exports.PACKAGE_VERSION = '0.
|
|
20
|
+
exports.PACKAGE_VERSION = '0.41.0';
|
|
21
21
|
exports.PACKAGE_NAME = '@opentelemetry/instrumentation-winston';
|
|
22
22
|
//# sourceMappingURL=version.js.map
|
package/build/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,wCAAwC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,wCAAwC,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.41.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-winston';\n"]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opentelemetry/instrumentation-winston",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.0",
|
|
4
4
|
"description": "OpenTelemetry instrumentation for `winston` logger",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"types": "build/src/index.d.ts",
|
|
7
7
|
"repository": "open-telemetry/opentelemetry-js-contrib",
|
|
8
8
|
"scripts": {
|
|
9
|
-
"test": "nyc
|
|
9
|
+
"test": "nyc mocha 'test/**/*.test.ts'",
|
|
10
10
|
"test-all-versions": "tav",
|
|
11
11
|
"tdd": "npm run test -- --watch-extensions ts --watch",
|
|
12
12
|
"clean": "rimraf build/*",
|
|
@@ -49,25 +49,23 @@
|
|
|
49
49
|
"@opentelemetry/context-async-hooks": "^1.21.0",
|
|
50
50
|
"@opentelemetry/sdk-trace-base": "^1.21.0",
|
|
51
51
|
"@opentelemetry/sdk-trace-node": "^1.21.0",
|
|
52
|
-
"@opentelemetry/winston-transport": "^0.
|
|
52
|
+
"@opentelemetry/winston-transport": "^0.7.0",
|
|
53
53
|
"@types/mocha": "7.0.2",
|
|
54
|
-
"@types/node": "18.
|
|
54
|
+
"@types/node": "18.18.14",
|
|
55
55
|
"@types/sinon": "10.0.20",
|
|
56
56
|
"@types/triple-beam": "^1.3.2",
|
|
57
|
-
"mocha": "7.2.0",
|
|
58
57
|
"nyc": "15.1.0",
|
|
59
58
|
"rimraf": "5.0.10",
|
|
60
59
|
"sinon": "15.2.0",
|
|
61
60
|
"test-all-versions": "6.1.0",
|
|
62
|
-
"ts-mocha": "10.0.0",
|
|
63
61
|
"typescript": "4.4.4",
|
|
64
62
|
"winston": "3.3.3",
|
|
65
63
|
"winston2": "npm:winston@2.4.7"
|
|
66
64
|
},
|
|
67
65
|
"dependencies": {
|
|
68
|
-
"@opentelemetry/api-logs": "^0.
|
|
69
|
-
"@opentelemetry/instrumentation": "^0.
|
|
66
|
+
"@opentelemetry/api-logs": "^0.54.0",
|
|
67
|
+
"@opentelemetry/instrumentation": "^0.54.0"
|
|
70
68
|
},
|
|
71
69
|
"homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-winston#readme",
|
|
72
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "7633caee19a7f04c5cc5e191d1ae7745ac3739f1"
|
|
73
71
|
}
|