UNPKG

miter

Version:

A typescript web framework based on ExpressJs based loosely on SailsJs

111 lines 4.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const clc_1 = require("../util/clc"); const direct_logger_1 = require("../util/direct-logger"); const logger_1 = require("./logger"); const fs = require("fs"); const path = require("path"); class LoggerCore { constructor(serverName, logLevel, createFile = true) { this.createFile = createFile; this.subsystems = new Map(); this._serverName = serverName; if (typeof logLevel === 'undefined') logLevel = { default: 'info' }; if (typeof logLevel === 'string') logLevel = { default: logLevel }; this.logLevel = logLevel; if (!createFile) return; let logPath = !!serverName ? `log/${serverName}` : `log`; try { logPath.split('/').forEach((dir, index, splits) => { let partialPath = path.resolve(splits.splice(0, index).join('/'), dir); if (!fs.existsSync(partialPath)) fs.mkdirSync(partialPath); }); this.fd = fs.openSync(`${logPath}/${serverName}.${new Date().getTime()}.log`, 'w'); } catch (e) { this.createFile = false; this.error(e); } } getSubsystem(name) { if (!this.subsystems.has(name)) this.subsystems.set(name, new logger_1.Logger(this, name)); return this.subsystems.get(name); } shutdown() { if (this.createFile) fs.close(this.fd); } get serverName() { return this._serverName; } logLabelMessage(subsystem) { if (!this.serverName && !subsystem) return ''; else if (!this.serverName) return clc_1.clc.white(`[${subsystem}]`); else if (!subsystem) return clc_1.clc.white(`[${clc_1.clc.bold(clc_1.clc.yellow(this.serverName))}]`); else return clc_1.clc.white(`[${clc_1.clc.bold(clc_1.clc.yellow(this.serverName))}:${subsystem}]`); } logLevelCheck(subsystem, logLevel) { let allowedLevel = (subsystem && this.logLevel[subsystem]) || this.logLevel['default']; switch (allowedLevel) { case 'verbose': return true; case 'info': return logLevel !== 'verbose'; case 'warn': return logLevel === 'warn' || logLevel === 'error'; case 'error': return logLevel === 'error'; } } writeToFile(message) { if (this.createFile) fs.write(this.fd, message + "\n", () => { }); } log(subsystem, message, ...optionalParams) { this.writeToFile(`[${new Date().toISOString()}:${subsystem}]: ${message}`); direct_logger_1.directLogger.clearLine(); direct_logger_1.directLogger.log(this.logLabelMessage(subsystem), message, ...optionalParams); } trace(subsystem, message, ...optionalParams) { this.writeToFile(`[${new Date().toISOString()}:${subsystem}]: ${message}`); direct_logger_1.directLogger.clearLine(); direct_logger_1.directLogger.trace(this.logLabelMessage(subsystem), message, ...optionalParams); } error(subsystem, message, ...optionalParams) { this.writeToFile(`[${new Date().toISOString()}:${subsystem}] error: ${message}`); direct_logger_1.directLogger.clearLine(); direct_logger_1.directLogger.error(this.logLabelMessage(subsystem), clc_1.clc.error(`error:`), message, ...optionalParams); } info(subsystem, message, ...optionalParams) { this.writeToFile(`[${new Date().toISOString()}:${subsystem}] info: ${message}`); if (!this.logLevelCheck(subsystem, 'info')) return; direct_logger_1.directLogger.clearLine(); direct_logger_1.directLogger.info(this.logLabelMessage(subsystem), clc_1.clc.info(`info:`), message, ...optionalParams); } warn(subsystem, message, ...optionalParams) { this.writeToFile(`[${new Date().toISOString()}:${subsystem}] warn: ${message}`); if (!this.logLevelCheck(subsystem, 'warn')) return; direct_logger_1.directLogger.clearLine(); direct_logger_1.directLogger.warn(this.logLabelMessage(subsystem), clc_1.clc.warn(`warn:`), message, ...optionalParams); } verbose(subsystem, message, ...optionalParams) { this.writeToFile(`[${new Date().toISOString()}:${subsystem}] verbose: ${message}`); if (!this.logLevelCheck(subsystem, 'verbose')) return; direct_logger_1.directLogger.clearLine(); direct_logger_1.directLogger.log(this.logLabelMessage(subsystem), 'verbose:', message, ...optionalParams); } } exports.LoggerCore = LoggerCore; //# sourceMappingURL=logger-core.js.map