-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.ts
26 lines (24 loc) · 874 Bytes
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import * as opentracing from 'opentracing'
function injectTrace(parent?: opentracing.Span | opentracing.SpanContext) {
let span;
let name = 'superagent.request';
if(span) {
span = opentracing.globalTracer().startSpan(name, { childOf: parent });
} else {
span = opentracing.globalTracer().startSpan(name);
}
const tracer = opentracing.globalTracer();
return function (request) {
const headers = {};
tracer.inject(span, opentracing.FORMAT_HTTP_HEADERS, headers);
request.set(headers);
request.end((error) => {
if(error){
span.setTag(opentracing.Tags.ERROR, true);
span.log({'event': 'error', 'error.object': error, 'message': error.message, 'stack': error.stack});
}
span.finish();
});
};
}
export default injectTrace;