UNPKG

pip-services3-components-nodex

Version:
125 lines 4.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LogTracer = void 0; const TraceTiming_1 = require("./TraceTiming"); const CompositeLogger_1 = require("../log/CompositeLogger"); const LogLevel_1 = require("../log/LogLevel"); const LogLevelConverter_1 = require("../log/LogLevelConverter"); /** * Tracer that dumps recorded traces to logger. * * ### Configuration parameters ### * * - __options:__ * - log_level: log level to record traces (default: debug) * * ### References ### * * - <code>\*:logger:\*:\*:1.0</code> [[ILogger]] components to dump the captured counters * - <code>\*:context-info:\*:\*:1.0</code> (optional) [[ContextInfo]] to detect the context id and specify counters source * * @see [[Tracer]] * @see [[CachedCounters]] * @see [[CompositeLogger]] * * ### Example ### * * let tracer = new LogTracer(); * tracer.setReferences(References.fromTuples( * new Descriptor("pip-services", "logger", "console", "default", "1.0"), new ConsoleLogger() * )); * * let timing = trcer.beginTrace("123", "mycomponent", "mymethod"); * try { * ... * timing.endTrace(); * } catch(err) { * timing.endFailure(err); * } * */ class LogTracer { /** * Creates a new instance of the tracer. */ constructor() { this._logger = new CompositeLogger_1.CompositeLogger(); this._logLevel = LogLevel_1.LogLevel.Debug; } /** * Configures component by passing configuration parameters. * * @param config configuration parameters to be set. */ configure(config) { this._logLevel = LogLevelConverter_1.LogLevelConverter.toLogLevel(config.getAsObject("options.log_level"), this._logLevel); } /** * Sets references to dependent components. * * @param references references to locate the component dependencies. * */ setReferences(references) { this._logger.setReferences(references); } logTrace(correlationId, component, operation, error, duration) { let builder = ""; if (error != null) { builder += "Failed to execute "; } else { builder += "Executed "; } builder += component; if (operation != null && operation != "") { builder += "."; builder += operation; } if (duration > 0) { builder += " in " + duration + " msec"; } if (error != null) { this._logger.error(correlationId, error, builder); } else { this._logger.log(this._logLevel, correlationId, null, builder); } } /** * Records an operation trace with its name and duration * * @param correlationId (optional) transaction id to trace execution through call chain. * @param component a name of called component * @param operation a name of the executed operation. * @param duration execution duration in milliseconds. */ trace(correlationId, component, operation, duration) { this.logTrace(correlationId, component, operation, null, duration); } /** * Records an operation failure with its name, duration and error * * @param correlationId (optional) transaction id to trace execution through call chain. * @param component a name of called component * @param operation a name of the executed operation. * @param error an error object associated with this trace. * @param duration execution duration in milliseconds. */ failure(correlationId, component, operation, error, duration) { this.logTrace(correlationId, component, operation, error, duration); } /** * Begings recording an operation trace * * @param correlationId (optional) transaction id to trace execution through call chain. * @param component a name of called component * @param operation a name of the executed operation. * @returns a trace timing object. */ beginTrace(correlationId, component, operation) { return new TraceTiming_1.TraceTiming(correlationId, component, operation, this); } } exports.LogTracer = LogTracer; //# sourceMappingURL=LogTracer.js.map