log4js2
Version:
[](https://travis-ci.org/anigenero/log4js2) [](https://codecov.io/gh/anigenero/log4js2)
121 lines • 3.36 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const __1 = require("..");
const marker_1 = require("../marker");
class Logger {
constructor(context, _appenders) {
this._appenders = _appenders;
this._logContext = context;
this._logSequence = 1;
this._relative = (new Date()).getTime();
}
/**
* Logs an error event
*
* @function
* @memberOf Logger
*/
error(...args) {
this._appenders.forEach((appender) => appender.append(this._constructLogEvent(__1.LogLevel.ERROR, arguments)));
}
/**
* Logs a warning
*
* @function
* @memberOf Logger
*/
warn(...args) {
this._appenders.forEach((appender) => appender.append(this._constructLogEvent(__1.LogLevel.WARN, arguments)));
}
/**
* Logs an info level event
*
* @function
* @memberOf Logger
*/
info(...args) {
this._appenders.forEach((appender) => appender.append(this._constructLogEvent(__1.LogLevel.INFO, arguments)));
}
/**
* Logs a debug event
*
* @function
* @memberOf Logger
*/
debug(...args) {
this._appenders.forEach((appender) => appender.append(this._constructLogEvent(__1.LogLevel.DEBUG, arguments)));
}
/**
* Logs a trace event
*
* @function
* @memberOf Logger
*/
trace(...args) {
this._appenders.forEach((appender) => appender.append(this._constructLogEvent(__1.LogLevel.TRACE, arguments)));
}
/**
* @function
*
* @param {number} level
* @param {Array.<Object>} args
*
* @return {ILogEvent}
*/
_constructLogEvent(level, args) {
const logTime = new Date();
let 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;
}
const logEvent = {
date: logTime,
error: null,
logErrorStack: error,
file: null,
level,
lineNumber: null,
logger: this._logContext,
message: '',
method: this._isNotStrict() ? args.callee.caller : 0,
properties: undefined,
relative: logTime.getTime() - this._relative,
sequence: this._logSequence++,
};
const regex = /\{\}/g;
for (let i = 0; i < args.length; i++) {
if (i === 0) {
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 if (args[i] instanceof marker_1.default) {
logEvent.marker = args[i];
}
else {
logEvent.properties = args[i];
}
}
return logEvent;
}
/**
* Returns whether or not the script is in strict mode
*
* @private
* @function
*
* @returns {boolean}
*/
_isNotStrict() {
return (() => !this)();
}
}
exports.Logger = Logger;
//# sourceMappingURL=logger.js.map