xud
Version:
Exchange Union Daemon
193 lines • 8.1 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LevelPriority = exports.Level = exports.Context = void 0;
const winston_1 = __importDefault(require("winston"));
const safe_1 = __importDefault(require("colors/safe"));
const utils_1 = require("./utils/utils");
var Level;
(function (Level) {
Level["Alert"] = "alert";
Level["Error"] = "error";
Level["Warn"] = "warn";
Level["Info"] = "info";
Level["Verbose"] = "verbose";
Level["Debug"] = "debug";
Level["Trace"] = "trace";
})(Level || (Level = {}));
exports.Level = Level;
const LevelPriorities = {
alert: 0,
error: 1,
warn: 2,
info: 3,
verbose: 4,
debug: 5,
trace: 6,
};
var LevelPriority;
(function (LevelPriority) {
LevelPriority[LevelPriority["alert"] = 0] = "alert";
LevelPriority[LevelPriority["error"] = 1] = "error";
LevelPriority[LevelPriority["warn"] = 2] = "warn";
LevelPriority[LevelPriority["info"] = 3] = "info";
LevelPriority[LevelPriority["verbose"] = 4] = "verbose";
LevelPriority[LevelPriority["debug"] = 5] = "debug";
LevelPriority[LevelPriority["trace"] = 6] = "trace";
})(LevelPriority || (LevelPriority = {}));
exports.LevelPriority = LevelPriority;
var Context;
(function (Context) {
Context["Global"] = "GLOBAL";
Context["DB"] = "DB";
Context["RPC"] = "RPC";
Context["P2P"] = "P2P";
Context["OrderBook"] = "ORDERBOOK";
Context["Lnd"] = "LND";
Context["Connext"] = "CONNEXT";
Context["Swaps"] = "SWAPS";
Context["Http"] = "HTTP";
Context["Backup"] = "BACKUP";
Context["Service"] = "SERVICE";
})(Context = exports.Context || (exports.Context = {}));
let Logger = /** @class */ (() => {
class Logger {
constructor({ level = Level.Trace, filename, context = Context.Global, subcontext, instanceId = 0, disabled, dateFormat, }) {
this.createSubLogger = (subcontext) => {
return new Logger({
subcontext,
instanceId: this.instanceId,
level: this.level,
filename: this.filename,
context: this.context,
disabled: this.logger === undefined,
dateFormat: this.dateFormat,
});
};
this.setLogLevel = (level) => {
var _a;
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.transports.forEach((transport) => {
transport.level = level;
});
};
this.getLogFormat = (colorize, dateFormat) => {
const { format } = winston_1.default;
const context = this.subcontext ? `${this.context}-${this.subcontext}` : this.context;
if (this.instanceId > 0) {
return format.printf(info => `${utils_1.getTsString(dateFormat)} [${context}][${this.instanceId}] ` +
`${this.getLevel(info.level, colorize)}: ${info.message}`);
}
else {
return format.printf(info => `${utils_1.getTsString(dateFormat)} [${context}] ${this.getLevel(info.level, colorize)}: ${info.message}`);
}
};
this.getLevel = (level, colorize) => {
if (colorize) {
switch (level) {
case 'alert': return safe_1.default.bgRed(level);
case 'error': return safe_1.default.red(level);
case 'warn': return safe_1.default.yellow(level);
case 'info': return safe_1.default.green(level);
case 'verbose': return safe_1.default.cyan(level);
case 'debug': return safe_1.default.blue(level);
case 'trace': return safe_1.default.magenta(level);
}
}
return level;
};
this.log = (level, msg) => {
if (this.logger) {
this.logger.log(level, msg);
}
};
this.alert = (msg) => {
this.log(Level.Alert, msg);
};
this.error = (msg, err) => {
let errMsg;
if (msg instanceof Error) {
// treat msg as an error object
errMsg = msg.stack ? msg.stack : `${msg.name} - ${msg.message}`;
}
else {
errMsg = msg;
if (err) {
errMsg += ': ';
if (err instanceof Error) {
errMsg += err.stack ? err.stack : `${err.name} - ${err.message}`;
}
else if (err.code && err.message) {
errMsg += `${err.code} - ${err.message}`;
}
else {
errMsg += JSON.stringify(err);
}
}
}
this.log(Level.Error, errMsg);
};
this.warn = (msg) => {
this.log(Level.Warn, msg);
};
this.info = (msg) => {
this.log(Level.Info, msg);
};
this.verbose = (msg) => {
this.log(Level.Verbose, msg);
};
this.debug = (msg) => {
this.log(Level.Debug, msg);
};
this.trace = (msg) => {
this.log(Level.Trace, msg);
};
this.level = level;
this.context = context;
this.subcontext = subcontext;
this.instanceId = instanceId;
this.dateFormat = dateFormat;
if (disabled) {
return;
}
const transports = [
new winston_1.default.transports.Console({
level: this.level,
format: this.getLogFormat(true, dateFormat),
}),
];
if (filename) {
this.filename = filename;
transports.push(new winston_1.default.transports.File({
filename,
level: this.level,
format: this.getLogFormat(false, dateFormat),
}));
}
this.logger = winston_1.default.createLogger({
transports,
levels: LevelPriorities,
});
}
}
Logger.DISABLED_LOGGER = new Logger({ disabled: true });
Logger.createLoggers = (level, filename = '', instanceId = 0, dateFormat) => {
const object = { instanceId, level, filename, dateFormat };
return {
global: new Logger(Object.assign(Object.assign({}, object), { context: Context.Global })),
db: new Logger(Object.assign(Object.assign({}, object), { context: Context.DB })),
rpc: new Logger(Object.assign(Object.assign({}, object), { context: Context.RPC })),
p2p: new Logger(Object.assign(Object.assign({}, object), { context: Context.P2P })),
orderbook: new Logger(Object.assign(Object.assign({}, object), { context: Context.OrderBook })),
lnd: new Logger(Object.assign(Object.assign({}, object), { context: Context.Lnd })),
connext: new Logger(Object.assign(Object.assign({}, object), { context: Context.Connext })),
swaps: new Logger(Object.assign(Object.assign({}, object), { context: Context.Swaps })),
http: new Logger(Object.assign(Object.assign({}, object), { context: Context.Http })),
service: new Logger(Object.assign(Object.assign({}, object), { context: Context.Service })),
};
};
return Logger;
})();
exports.default = Logger;
//# sourceMappingURL=Logger.js.map