UNPKG

@ts-ioc/logs

Version:

tsioc is AOP, Ioc container, via typescript decorator

117 lines (115 loc) 4.56 kB
"use strict"; 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