pip-services3-components-node
Version:
Component definitions for Pip.Services in Node.js
80 lines • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CompositeLogger = void 0;
const pip_services3_commons_node_1 = require("pip-services3-commons-node");
const Logger_1 = require("./Logger");
/**
* Aggregates all loggers from component references under a single component.
*
* It allows to log messages and conveniently send them to multiple destinations.
*
* ### References ###
*
* - <code>\*:logger:\*:\*:1.0</code> (optional) [[ILogger]] components to pass log messages
*
* @see [[ILogger]]
*
* ### Example ###
*
* class MyComponent implements IConfigurable, IReferenceable {
* private _logger: CompositeLogger = new CompositeLogger();
*
* public configure(config: ConfigParams): void {
* this._logger.configure(config);
* ...
* }
*
* public setReferences(references: IReferences): void {
* this._logger.setReferences(references);
* ...
* }
*
* public myMethod(string correlationId): void {
* this._logger.debug(correlationId, "Called method mycomponent.mymethod");
* ...
* }
* }
*
*/
class CompositeLogger extends Logger_1.Logger {
/**
* Creates a new instance of the logger.
*
* @param references references to locate the component dependencies.
*/
constructor(references = null) {
super();
this._loggers = [];
if (references)
this.setReferences(references);
}
/**
* Sets references to dependent components.
*
* @param references references to locate the component dependencies.
*/
setReferences(references) {
super.setReferences(references);
let loggers = references.getOptional(new pip_services3_commons_node_1.Descriptor(null, "logger", null, null, null));
for (var i = 0; i < loggers.length; i++) {
let logger = loggers[i];
// Todo: This doesn't work in TS. Redo...
if (logger != this)
this._loggers.push(logger);
}
}
/**
* Writes a log message to the logger destination(s).
*
* @param level a log level.
* @param correlationId (optional) transaction id to trace execution through call chain.
* @param error an error object associated with this message.
* @param message a human-readable message to log.
*/
write(level, correlationId, error, message) {
for (let index = 0; index < this._loggers.length; index++)
this._loggers[index].log(level, correlationId, error, message);
}
}
exports.CompositeLogger = CompositeLogger;
//# sourceMappingURL=CompositeLogger.js.map