opentelemetry-js/examples/redis/express-tracer-handlers.js

37 lines
920 B
JavaScript

'use strict'
const types = require('@opentelemetry/types');
function getMiddlewareTracer(tracer) {
return function(req, res, next) {
const span = tracer.startSpan(`express.middleware.tracer(${req.method} ${req.path})`, {
parent: tracer.getCurrentSpan(),
kind: types.SpanKind.SERVER,
});
// End this span before sending out the response
const originalSend = res.send;
res.send = function send() {
span.end();
originalSend.apply(res, arguments);
}
tracer.withSpan(span, next);
}
}
function getErrorTracer(tracer) {
return function(err, _req, res, _next) {
console.log('Caught error', err.message);
const span = tracer.getCurrentSpan();
if (span) {
span.setStatus({ code: types.CanonicalCode.INTERNAL, message: err.message });
}
res.status(500).send(err.message);
}
}
module.exports = {
getMiddlewareTracer, getErrorTracer
}