89 lines
2.9 KiB
JavaScript
89 lines
2.9 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.Logger = void 0;
|
||
|
const log_message_1 = require("./log-message");
|
||
|
class Logger {
|
||
|
constructor(name, parentLogger, threshold) {
|
||
|
this.name = name;
|
||
|
this.parentLogger = parentLogger;
|
||
|
this.threshold = threshold;
|
||
|
this.appenders = [];
|
||
|
}
|
||
|
createChildLogger(name, threshold) {
|
||
|
return new Logger(name, this, threshold);
|
||
|
}
|
||
|
doLog(level, message, stacktrace) {
|
||
|
if (level < this.getEffectiveThreshold()) {
|
||
|
return;
|
||
|
}
|
||
|
const logMsg = {
|
||
|
scope: this.name,
|
||
|
level,
|
||
|
message: '',
|
||
|
stacktrace: '',
|
||
|
timestamp: new Date()
|
||
|
};
|
||
|
if (message === undefined || message === null) {
|
||
|
logMsg.message = message;
|
||
|
logMsg.stacktrace = stacktrace == null ? '' : stacktrace;
|
||
|
}
|
||
|
else if (message.call !== undefined) {
|
||
|
logMsg.message = message();
|
||
|
logMsg.stacktrace = stacktrace == null ? '' : stacktrace;
|
||
|
}
|
||
|
else if (message instanceof Error) {
|
||
|
const error = message;
|
||
|
logMsg.error = error;
|
||
|
logMsg.message = `${error.name}: ${error.message}`;
|
||
|
logMsg.stacktrace = error.stack == null ? '' : error.stack;
|
||
|
}
|
||
|
else {
|
||
|
// string | object
|
||
|
logMsg.message = message;
|
||
|
logMsg.stacktrace = stacktrace == null ? '' : stacktrace;
|
||
|
}
|
||
|
this.sendToAppenders(logMsg);
|
||
|
}
|
||
|
trace(message, stacktrace) {
|
||
|
this.doLog(log_message_1.LogLevel.TRACE, message, stacktrace);
|
||
|
}
|
||
|
debug(message, stacktrace) {
|
||
|
this.doLog(log_message_1.LogLevel.DEBUG, message, stacktrace);
|
||
|
}
|
||
|
log(message, stacktrace) {
|
||
|
this.doLog(log_message_1.LogLevel.LOG, message, stacktrace);
|
||
|
}
|
||
|
info(message, stacktrace) {
|
||
|
this.doLog(log_message_1.LogLevel.INFO, message, stacktrace);
|
||
|
}
|
||
|
warn(message, stacktrace) {
|
||
|
this.doLog(log_message_1.LogLevel.WARN, message, stacktrace);
|
||
|
}
|
||
|
error(message, stacktrace) {
|
||
|
this.doLog(log_message_1.LogLevel.ERROR, message, stacktrace);
|
||
|
}
|
||
|
fatal(message, stacktrace) {
|
||
|
this.doLog(log_message_1.LogLevel.FATAL, message, stacktrace);
|
||
|
}
|
||
|
sendToAppenders(logMsg) {
|
||
|
this.appenders.forEach(app => {
|
||
|
app.appendMessage(logMsg);
|
||
|
});
|
||
|
if (this.parentLogger) {
|
||
|
this.parentLogger.sendToAppenders(logMsg);
|
||
|
}
|
||
|
}
|
||
|
getEffectiveThreshold() {
|
||
|
if (this.threshold) {
|
||
|
return this.threshold;
|
||
|
}
|
||
|
if (this.parentLogger) {
|
||
|
return this.parentLogger.getEffectiveThreshold();
|
||
|
}
|
||
|
// should never happen (root logger should always have a threshold
|
||
|
return log_message_1.LogLevel.ALL;
|
||
|
}
|
||
|
}
|
||
|
exports.Logger = Logger;
|
||
|
exports.default = Logger;
|