@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
55 lines (54 loc) • 1.5 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var __1 = require("../");
require("reflect-metadata");
var logMarker = Symbol('logMarker');
/**
* Sets the marker for the @Log decorator
*
* @constructor
*
* @param {Marker} marker
*/
function LogMarker(marker) {
return function (target, key) {
Reflect.defineMetadata(logMarker, marker, target, key);
};
}
exports.LogMarker = LogMarker;
/**
* Log an error on function entry
*
* @constructor
*
* @param {LogLevel} level
* @param {string} message
* @param {any[]} options
*
* @returns {Function}
*/
function Log(level, message) {
var options = [];
for (var _i = 2; _i < arguments.length; _i++) {
options[_i - 2] = arguments[_i];
}
return function (target, key, descriptor) {
var originalMethod = descriptor.value;
descriptor.value = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var marker = Reflect.getOwnMetadata(logMarker, target, key);
var logger = __1.getLogger(target);
if (marker) {
logger.log.apply(logger, [level, marker, message].concat(options));
}
else {
logger.log.apply(logger, [level, message].concat(options));
}
return originalMethod.call(this, args);
};
return descriptor;
};
}
exports.Log = Log;