@ts-ioc/logs
Version:
tsioc is AOP, Ioc container, via typescript decorator
117 lines (115 loc) • 4.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var aop_1 = require("@ts-ioc/aop");
var core_1 = require("@ts-ioc/core");
var IConfigureLoggerManager_1 = require("./IConfigureLoggerManager");
var LogFormater_1 = require("./LogFormater");
/**
* base looger aspect. for extends your logger aspect.
*
* @export
* @class LoggerAspect
*/
var LoggerAspect = /** @class */ (function () {
function LoggerAspect(container, config) {
this.container = container;
this.config = config;
}
Object.defineProperty(LoggerAspect.prototype, "logger", {
get: function () {
if (!this._logger) {
this._logger = this.logManger.getLogger();
}
return this._logger;
},
enumerable: true,
configurable: true
});
Object.defineProperty(LoggerAspect.prototype, "logManger", {
get: function () {
if (!this._logManger) {
this._logManger = this.container.resolve(IConfigureLoggerManager_1.ConfigureLoggerManagerToken, { config: this.config });
}
return this._logManger;
},
enumerable: true,
configurable: true
});
LoggerAspect.prototype.processLog = function (joinPoint, annotation, message, level) {
var _this = this;
if (annotation && annotation.length) {
annotation.forEach(function (logmeta) {
var canlog = false;
if (logmeta.express && logmeta.express(joinPoint)) {
canlog = true;
}
else if (!logmeta.express) {
canlog = true;
}
if (canlog) {
_this.writeLog(logmeta.logname ? _this.logManger.getLogger(logmeta.logname) : _this.logger, joinPoint, _this.joinMessage(message, logmeta.message), logmeta.level || level);
}
});
}
else {
this.writeLog(this.logger, joinPoint, message, level);
}
};
LoggerAspect.prototype.joinMessage = function () {
var messgs = [];
for (var _i = 0; _i < arguments.length; _i++) {
messgs[_i] = arguments[_i];
}
return messgs.filter(function (a) { return a; }).map(function (a) { return core_1.isString(a) ? a : a.toString(); }).join('; ');
};
LoggerAspect.prototype.writeLog = function (logger, joinPoint, message, level) {
var formatStr = this.formatMessage(joinPoint, message);
if (level) {
logger[level](formatStr);
}
else {
switch (joinPoint.state) {
case aop_1.JoinpointState.Before:
case aop_1.JoinpointState.After:
case aop_1.JoinpointState.AfterReturning:
logger.debug(formatStr);
break;
case aop_1.JoinpointState.Pointcut:
logger.info(formatStr);
break;
case aop_1.JoinpointState.AfterThrowing:
logger.error(formatStr);
break;
}
}
};
LoggerAspect.prototype.formatMessage = function (joinPoint, message) {
var config = this.logManger.config;
var formater;
config.format = config.format || LogFormater_1.LogFormaterToken;
if (core_1.isToken(config.format)) {
formater = this.container.getService(config.format, core_1.lang.getClass(this));
}
else if (core_1.isFunction(config.format)) {
formater = { format: config.format };
}
else if (core_1.isObject(config.format) && core_1.isFunction(config.format.format)) {
formater = config.format;
}
if (formater) {
return formater.format(joinPoint, message);
}
return '';
};
LoggerAspect.getClassAnnations = function () {
return { "name": "LoggerAspect", "params": { "constructor": ["container", "config"], "processLog": ["joinPoint", "annotation", "message", "level"], "joinMessage": ["messgs"], "writeLog": ["logger", "joinPoint", "message", "level"], "formatMessage": ["joinPoint", "message"] } };
};
LoggerAspect = tslib_1.__decorate([
core_1.Abstract(),
tslib_1.__metadata("design:paramtypes", [Object, Object])
], LoggerAspect);
return LoggerAspect;
}());
exports.LoggerAspect = LoggerAspect;
//# sourceMappingURL=sourcemaps/LoggerAspect.js.map