dl
Version:
DreamLab Libs
81 lines (68 loc) • 2.37 kB
JavaScript
var logger = require('../logger');
/*
* Queue service event logging
*
* <QUEUE>
* + <servicename>
* + <appname>
* + <credential_id>
* + connection
* + connected [counter]
* + disconnected [counter]
* + message
* + delay [miliseconds]
* + ack.delay [miliseconds]
* + reject.delay [miliseconds]
* + postpone.delay [miliseconds]
* + postpone.rounds [number]
* + postpone.error [counter]
* + publish
* + confirm.delay [miliseconds]
* + reject.delay [miliseconds]
* + size.body [bytes]
* + size.total [bytes]
*/
//TODO: this class will be probably to remove when all metrics are migrated to MaaS
var QueueLogger = function () {
this._config = {
connection: true,
message: false,
publish: false
};
this._monitoringConfig = {
key: null,
prefix: null
};
this._logger = logger.get('dl.queue.QueueLogger');
this._logger.setParent(this._logger); // we do not want here to inherit from application DEFAULT logger
};
QueueLogger.prototype.setConfig = function (config, monitoringConfig) {
console.log('QueueLogger/setConfig', config, monitoringConfig);
this._config = config;
this._monitoringConfig = monitoringConfig;
if (this._monitoringConfig.key && this._monitoringConfig.prefix) {
this._logger.configure({
metricPrefix: this._monitoringConfig.prefix,
reporters: {
MAAS: {
key: this._monitoringConfig.key
}
}
});
}
};
QueueLogger.prototype.log = function (area, path, value, msgId) {
if (value || value === 0) {
this._logger.gauge([area, path], value);
} else {
this._logger.counter([area, path]);
}
if (this._config[area]) {
if (value === undefined) {
value = true;
}
var msgIdStr = msgId ? 'messageId=' + msgId : '';
console.info('QueueLogger: %s value=%s %s', [area, path].join('.'), value, msgIdStr);
}
};
exports.QueueLogger = QueueLogger;