UNPKG

@apartmentlist/js-trace-logger

Version:
43 lines (42 loc) 1.38 kB
import { tracer } from 'dd-trace'; import { compileTemplate } from './util'; import { LoggerSeverity } from './constant'; export class LogFormatter { constructor(option, passed_tracer) { const { env, service, version, progname, logTemplate, traceTemplate, dateFunc } = option; this.env = env; this.service = service; this.version = version; this.progname = progname; this.logFunc = compileTemplate(logTemplate); this.traceFunc = compileTemplate(traceTemplate); this.dateFunc = dateFunc; this.tracer = passed_tracer || tracer; } format(dt, sev, msg) { return this.logFunc({ datetime: this.dateFunc(dt), progname: this.progname, severity: LoggerSeverity[sev], trace: this.toTraceString(), msg: msg, }); } toTraceString() { const activeSpan = this.tracer.scope().active(); let trace_id = '1'; let span_id = '1'; if (activeSpan) { const context = activeSpan.context(); trace_id = context.toTraceId(); span_id = context.toSpanId(); } return this.traceFunc({ env: this.env, service: this.service, version: this.version, trace_id: trace_id, span_id: span_id, }); } }