debug-server-next
Version:
Dev server for hippy-core.
46 lines (45 loc) • 1.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = void 0;
const tslib_1 = require("tslib");
const path_1 = tslib_1.__importDefault(require("path"));
const util_1 = tslib_1.__importDefault(require("util"));
const safe_1 = tslib_1.__importStar(require("colors/safe"));
const winston_1 = require("winston");
const config_1 = require("@/config");
require("winston-daily-rotate-file");
class Logger {
constructor(label = '', color) {
this.label = label;
this.color = color;
this.initLoggerInstance();
}
info(...args) {
this.log('info', ...args);
}
warn(...args) {
this.log('warn', ...args);
}
error(...args) {
this.log('error', ...args);
}
log(level, ...args) {
const msg = util_1.default.format(...args);
this.loggerInstance.log(level, msg);
}
initLoggerInstance() {
const transport = new winston_1.transports.DailyRotateFile({
filename: path_1.default.join(config_1.config.logPath, '%DATE%.log'),
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: false,
maxSize: '20m',
maxFiles: '7d',
});
const label = this.color ? safe_1.default[this.color](this.label) : safe_1.random(this.label);
this.loggerInstance = winston_1.createLogger({
format: winston_1.format.combine(winston_1.format.errors({ stack: true }), winston_1.format.label({ label }), winston_1.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' }), winston_1.format.colorize(), winston_1.format.printf(({ level, message, label, timestamp }) => `${timestamp} ${label} ${level} ${message}`)),
transports: [transport, new winston_1.transports.Console()],
});
}
}
exports.Logger = Logger;