UNPKG

lightstep-tracer

Version:

> ❗ **This instrumentation is no longer recommended**. Please review [documentation on setting up and configuring the OpenTelemetry Node.js Launcher](https://github.com/lightstep/otel-launcher-node) or [OpenTelemetry JS (Browser)](https://github.com/open-

89 lines (77 loc) 2.52 kB
const constants = require('../constants'); class LogToConsole { constructor() { this._enabled = false; this._tracer = null; this._optionsCb = this._handleOptions.bind(this); this._logAddedCb = this._handleLogAdded.bind(this); } name() { return 'log_to_console'; } addOptions(tracerImp) { tracerImp.addOption('log_to_console', { type : 'bool', defaultValue : false, }); tracerImp.on('options', this._optionsCb); } start(tracer, tracerImp) { this._tracer = tracer; } stop() { this._tracer.removeListener('options', this._optionsCb); } _handleOptions(modified, current, tracerImp) { let enabled = current.log_to_console; if (this._enabled === enabled) { return; } this._enabled = enabled; if (this._enabled) { tracerImp.on('log_added', this._logAddedCb); } else { tracerImp.removeListener('log_added', this._logAddedCb); } } _handleLogAdded(record) { let level = constants.LOG_STRING_TO_LEVEL[record.level]; let { message } = record; // Ignore records without a message (e.g. a stable_name log record) if (!message) { return; } let payload = record.payload_json; if (payload) { try { payload = JSON.parse(payload); } catch (_ignored) { /* ignored */ } } switch (level) { case constants.LOG_ERROR: case constants.LOG_FATAL: if (payload !== undefined) { console.error(message, payload); // eslint-disable-line no-console } else { console.error(message); // eslint-disable-line no-console } break; case constants.LOG_WARN: if (payload !== undefined) { console.warn(message, payload); // eslint-disable-line no-console } else { console.warn(message); // eslint-disable-line no-console } break; case constants.LOG_INFO: default: if (payload !== undefined) { console.log(message, payload); // eslint-disable-line no-console } else { console.log(message); // eslint-disable-line no-console } break; } } } module.exports = new LogToConsole();