@voicenter-team/mysql-dynamic-cluster
Version:
Galera cluster with implementation of dynamic choose mysql server for queries, caching, hashing it and metrics
79 lines • 3.5 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const winston_1 = __importDefault(require("winston"));
const WinstonAMQPPoolTransport_1 = __importDefault(require("@voicenter-team/failover-amqp-pool/WinstonAMQPPoolTransport"));
const LoggerInterfaces_1 = require("../types/LoggerInterfaces");
const configs_1 = __importDefault(require("../configs"));
const consoleFormat = winston_1.default.format.printf((_a) => {
var { level, timestamp, requestID, message } = _a, extra = __rest(_a, ["level", "timestamp", "requestID", "message"]);
return `[${timestamp}]${requestID ? '[req:' + requestID + ']' : ''} [${level}] ${message} ${Object.keys(extra).length ? JSON.stringify(extra) : ''}`;
});
class Logger {
init() {
const logLevel = configs_1.default.get('logs.level');
const output = configs_1.default.get('logs.output')
.split(',')
.map((out) => out.trim());
this.logger = winston_1.default.createLogger({
level: logLevel,
format: winston_1.default.format.combine(winston_1.default.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' })),
silent: logLevel === LoggerInterfaces_1.LOGLEVEL.SILENT
});
if (output.includes('console')) {
this.logger.add(new winston_1.default.transports.Console({
format: consoleFormat,
}));
}
if (output.includes('amqp')) {
const amqpConfig = {
topic: configs_1.default.get('amqp_logs.topic'),
pool: []
};
amqpConfig.pool.push({
connection: configs_1.default.get('amqp_logs.connection_master'),
channel: {
exchange: configs_1.default.get('amqp_logs.exchage'),
queue: configs_1.default.get('amqp_logs.queue'),
binding: configs_1.default.get('amqp_logs.bindings'),
prefetch: configs_1.default.get('amqp_logs.prefetch')
}
});
this.logger.add(new WinstonAMQPPoolTransport_1.default(amqpConfig));
}
}
log(type, message, meta = {}) {
this.logger.log(type, message, meta);
}
// Convenience methods below
debug(message, meta = {}) {
this.log(LoggerInterfaces_1.LOGTYPES.DEBUG, message, meta);
}
info(message, meta = {}) {
this.log(LoggerInterfaces_1.LOGTYPES.INFO, message, meta);
}
error(message, meta = {}) {
this.log(LoggerInterfaces_1.LOGTYPES.ERROR, message, meta);
}
verbose(message, meta = {}) {
this.log(LoggerInterfaces_1.LOGTYPES.VERBOSE, message, meta);
}
warn(message, meta = {}) {
this.log(LoggerInterfaces_1.LOGTYPES.WARN, message, meta);
}
}
exports.default = new Logger();
//# sourceMappingURL=Logger.js.map