node-jet
Version:
Jet Realtime Message Bus for the Web. Daemon and Peer implementation.
89 lines (88 loc) • 2.38 kB
JavaScript
export var LogLevel;
(function (LogLevel) {
LogLevel[LogLevel["socket"] = 1] = "socket";
LogLevel[LogLevel["debug"] = 2] = "debug";
LogLevel[LogLevel["info"] = 3] = "info";
LogLevel[LogLevel["warn"] = 4] = "warn";
LogLevel[LogLevel["error"] = 5] = "error";
LogLevel[LogLevel["none"] = 6] = "none";
})(LogLevel || (LogLevel = {}));
/**
* Logger class used for logging. Logging can be done to a file to the console or to any callback
*/
export class Logger {
logName;
logLevel;
callBacks;
/**
* Constructor to create a new Logger instance
* @param settings
*/
constructor(settings = { logName: 'None' }) {
this.logName = settings.logName;
this.logLevel = settings.logLevel || LogLevel.none;
this.callBacks = settings.logCallbacks;
}
/**
* Function that transforms a message into a string of the format "<Date> <Time> <LogName> <LogLevel> <Message>"
* @param msg
* @param level
* @returns string
*/
stringBuilder(msg, level) {
const date = new Date(Date.now());
return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}\t${this.logName}\t${LogLevel[level]}\t${msg}`;
}
/**
* Function called to log a message. Messages are only logged if the provided message log level is greater then the configured log level
* @param msg
* @param level
* @returns string
*/
log(msg, level = LogLevel.debug) {
if (this.logLevel > level) {
return;
}
const logMessage = this.stringBuilder(msg, level);
if (this.callBacks) {
this.callBacks.every((cb) => {
cb(logMessage);
});
}
}
/**
* Log a message on the socket level
* @param msg
*/
sock(msg) {
this.log(msg, LogLevel.socket);
}
/**
* Log a message on the debug level
* @param msg
*/
debug(msg) {
this.log(msg, LogLevel.debug);
}
/**
* Log a Info message
* @param msg
*/
info(msg) {
this.log(msg, LogLevel.info);
}
/**
* Log a warn message
* @param msg
*/
warn(msg) {
this.log(msg, LogLevel.warn);
}
/**
* Log an error message
* @param msg
*/
error(msg) {
this.log(msg, LogLevel.error);
}
}