@kyve/core-beta
Version:
🚀 The base KYVE node implementation.
82 lines (81 loc) • 3.07 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupLogger = void 0;
const fs_1 = require("fs");
const path_1 = __importDefault(require("path"));
const tslog_1 = require("tslog");
const __1 = require("../..");
/**
* setupLogger creates the logger instance and defines the home and file
* where logs are saved for debugging.
*
* @method setupLogger
* @param {Node} this
* @return {void}
*/
function setupLogger() {
try {
// if "logs" folder under target path does not exist create it
if (!(0, fs_1.existsSync)(path_1.default.join(this.home, "logs"))) {
(0, fs_1.mkdirSync)(path_1.default.join(this.home, "logs"), { recursive: true });
}
// name the log file after the time the node got started
const logFile = `${new Date().toISOString()}.log`;
const logToTransport = (log) => {
const message = log.argumentsArray[0];
if (typeof message === "string") {
// don't save cache logs because this would bloat
// the local storage
if (message.startsWith("this.cache")) {
return;
}
// don't save runtime logs because this would bloat
// the local storage
if (message.startsWith("this.runtime")) {
return;
}
}
// format log message
let format = `${log.date.toISOString()} ${log.logLevel.toUpperCase()}\t[${log.fileName}:${log.lineNumber}]`;
for (const arg of log.argumentsArray) {
if (typeof arg === "string") {
format += ` ${arg}`;
}
else {
format += ` ${JSON.stringify(arg)}`;
}
}
// save logs to specified path target
(0, fs_1.appendFileSync)(path_1.default.join(this.home, `logs`, logFile), format + "\n");
};
// hide verbose logging information
const logger = new tslog_1.Logger({
displayFilePath: "hidden",
displayFunctionName: this.debug,
});
// set log level depending on debug mode
// TODO @regenisis: remove deprecated "--verbose" option flag
logger.setSettings({
minLevel: this.debug ? undefined : "info",
});
logger.attachTransport({
silly: logToTransport,
debug: logToTransport,
trace: logToTransport,
info: logToTransport,
warn: logToTransport,
error: logToTransport,
fatal: logToTransport,
});
this.logger = logger;
}
catch (err) {
this.logger.fatal(`Failed to init logger. Exiting ...`);
this.logger.fatal((0, __1.standardizeJSON)(err));
process.exit(1);
}
}
exports.setupLogger = setupLogger;