UNPKG

@log4js2/core

Version:

log4js2 is a fast and lightweight logging library that enables logging flexibility within JavaScript/TypeScript applications, similar to Apache's [Log4j2 library](https://logging.apache.org/log4j/2.x/). It can also serve as a drop-in replacement for log4

159 lines (158 loc) 5.29 kB
Object.defineProperty(exports, "__esModule", { value: true }); var __1 = require(".."); var marker_1 = require("../marker"); var Logger = /** @class */ (function () { function Logger(context, _appenders) { this._appenders = _appenders; this._logContext = context; this._logSequence = 0; this._relative = (new Date()).getTime(); } Logger.prototype.log = function (level, marker) { var _this = this; var args = []; for (var _i = 2; _i < arguments.length; _i++) { args[_i - 2] = arguments[_i]; } var passed = arguments; this._appenders.forEach(function (appender) { return appender.append(_this._constructLogEvent(level, passed, 1)); }); }; Logger.prototype.fatal = function (marker) { var _this = this; var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var passed = arguments; this._appenders.forEach(function (appender) { return appender.append(_this._constructLogEvent(__1.LogLevel.FATAL, passed)); }); }; Logger.prototype.error = function (marker) { var _this = this; var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var passed = arguments; this._appenders.forEach(function (appender) { return appender.append(_this._constructLogEvent(__1.LogLevel.ERROR, passed)); }); }; Logger.prototype.warn = function (marker) { var _this = this; var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var passed = arguments; this._appenders.forEach(function (appender) { return appender.append(_this._constructLogEvent(__1.LogLevel.WARN, passed)); }); }; Logger.prototype.info = function (marker) { var _this = this; var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var passed = arguments; this._appenders.forEach(function (appender) { return appender.append(_this._constructLogEvent(__1.LogLevel.INFO, passed)); }); }; Logger.prototype.debug = function (marker) { var _this = this; var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var passed = arguments; this._appenders.forEach(function (appender) { return appender.append(_this._constructLogEvent(__1.LogLevel.DEBUG, passed)); }); }; Logger.prototype.trace = function (marker) { var _this = this; var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var passed = arguments; this._appenders.forEach(function (appender) { return appender.append(_this._constructLogEvent(__1.LogLevel.TRACE, passed)); }); }; /** * @function * * @param {number} level * @param {Array.<Object>} args * @param {number} offset * * @return {ILogEvent} */ Logger.prototype._constructLogEvent = function (level, args, offset) { if (offset === void 0) { offset = 0; } var logTime = new Date(); var error = null; // this looks horrible, but this is the only way to catch the stack for IE to later parse the stack try { throw new Error(); } catch (e) { error = e; } var logEvent = { date: logTime, error: null, logErrorStack: error, file: null, level: level, lineNumber: null, logger: this._logContext, message: '', method: this._isNotStrict() ? args.callee.caller : 0, properties: undefined, relative: logTime.getTime() - this._relative, sequence: this._logSequence++, }; var regex = /\{\}/g; for (var i = offset; i < args.length; i++) { if (i === offset || (i === offset + 1 && logEvent.marker)) { if (args[i] instanceof marker_1.Marker) { logEvent.marker = args[i]; } else { logEvent.message = args[i]; } } else if (regex.exec(logEvent.message)) { logEvent.message = logEvent.message.replace(/\{\}/, args[i]); } else if (args[i] instanceof Error) { logEvent.error = args[i]; } else { logEvent.properties = args[i]; } } return logEvent; }; /** * Returns whether or not the script is in strict mode * * @private * @function * * @returns {boolean} */ Logger.prototype._isNotStrict = function () { var _this = this; return (function () { return !_this; })(); }; return Logger; }()); exports.Logger = Logger;