@sangaman/xud
Version:
Exchange Union Daemon
111 lines • 4.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const winston_1 = __importDefault(require("winston"));
const utils_1 = require("./utils/utils");
var Level;
(function (Level) {
Level["ERROR"] = "error";
Level["WARN"] = "warn";
Level["INFO"] = "info";
Level["VERBOSE"] = "verbose";
Level["DEBUG"] = "debug";
})(Level || (Level = {}));
var Context;
(function (Context) {
Context["GLOBAL"] = "GLOBAL";
Context["DB"] = "DB";
Context["RPC"] = "RPC";
Context["P2P"] = "P2P";
Context["ORDERBOOK"] = "ORDERBOOK";
Context["LND"] = "LND";
Context["RAIDEN"] = "RAIDEN";
})(Context = exports.Context || (exports.Context = {}));
const contextFileMap = {
[Context.GLOBAL]: 'xud.log',
[Context.DB]: 'xud.log',
[Context.RPC]: 'xud.log',
[Context.P2P]: 'xud.log',
[Context.ORDERBOOK]: 'xud.log',
[Context.LND]: 'xud.log',
[Context.RAIDEN]: 'xud.log',
};
class Logger {
constructor({ instanceId, level, logDir, context }) {
this.log = (level, msg) => {
this.logger.log(level, msg);
};
this.error = (msg, err) => {
let errMsg;
if (msg instanceof Error) {
// treat msg as an error object
errMsg = msg.stack ? msg.stack : '';
}
else if (err) {
errMsg = `${msg} ${err.stack}`;
}
else {
errMsg = msg;
}
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.level = level || Logger.defaultLevel;
this.logDir = logDir || Logger.defaultLogDir;
this.context = context || Context.GLOBAL;
this.instanceId = instanceId || 0;
const { format } = winston_1.default;
let logFormat;
if (this.instanceId > 0) {
logFormat = format.printf((info) => `${utils_1.getTsString()} [${this.context}][${this.instanceId}] ${info.level}: ${info.message}`);
}
else {
logFormat = format.printf((info) => `${utils_1.getTsString()} [${this.context}] ${info.level}: ${info.message}`);
}
if (!fs_1.default.existsSync(this.logDir)) {
fs_1.default.mkdirSync(this.logDir);
}
this.logger = winston_1.default.createLogger({
level: this.level,
format: logFormat,
transports: [
new winston_1.default.transports.Console({ format: format.combine(format.colorize(), logFormat) }),
new winston_1.default.transports.File({
filename: path_1.default.join(this.logDir, contextFileMap[this.context]),
}),
],
});
}
}
Logger.defaultLogDir = 'logs';
Logger.defaultLevel = process.env.NODE_ENV === 'production'
? Level.INFO
: Level.DEBUG;
Logger.createLoggers = (instanceId = 0) => {
return {
global: new Logger({ instanceId, context: Context.GLOBAL }),
db: new Logger({ instanceId, context: Context.DB }),
rpc: new Logger({ instanceId, context: Context.RPC }),
p2p: new Logger({ instanceId, context: Context.P2P }),
orderbook: new Logger({ instanceId, context: Context.ORDERBOOK }),
lnd: new Logger({ instanceId, context: Context.LND }),
raiden: new Logger({ instanceId, context: Context.RAIDEN }),
};
};
exports.default = Logger;
//# sourceMappingURL=Logger.js.map