@apartmentlist/js-trace-logger
Version:
Logger outputs messages with Trace ID
43 lines (42 loc) • 1.38 kB
JavaScript
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,
});
}
}