UNPKG

@sangaman/xud

Version:
111 lines 4.1 kB
"use strict"; 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