src/tools/tracer.js   A
last analyzed

Complexity

Total Complexity 4
Complexity/F 2

Size

Lines of Code 38
Function Count 2

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 24
mnd 2
bc 2
fnc 2
dl 0
loc 38
rs 10
bpm 1
cpm 2
noi 0
c 0
b 0
f 0
1
import { initTracer } from 'jaeger-client';
2
3
import logger from './logger';
4
5
const config = {
6
  // serviceName is anchored to APP_NAME exported in Makefile
7
  serviceName: process.env.APP_NAME,
8
  sampler: {
9
    type: 'const',
10
    param: 1,
11
  },
12
  reporter: {
13
    logSpans: process.env.NODE_ENV === 'development',
14
  },
15
};
16
const option = { logger };
17
18
const configTracer = () => initTracer(config, option);
19
20
let instance;
21
22
const tracer = {
23
  rootSpan: undefined,
24
  start: (name) => {
25
    if (!instance) {
26
      instance = configTracer();
27
    }
28
    if (tracer.rootSpan) {
29
      const span = instance.startSpan(name, { childOf: tracer.rootSpan });
30
      return span;
31
    }
32
    const span = instance.startSpan(name);
33
    tracer.rootSpan = span;
34
    return span;
35
  },
36
};
37
38
export default tracer;
39