UNPKG

@ganache/utils

Version:
49 lines 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLogger = void 0; const fs_1 = require("fs"); const util_1 = require("util"); const os_1 = require("os"); // this needs to match start of line with both CRLF and LF encoding (^ matches after _both_ CR and LF) const START_OF_LINE = /^|(?<=\r?\n)/g; function createLogger(config) { const baseLog = (...params) => config.baseLogger.log(...params); if ("file" in config && config.file !== undefined) { const fd = config.file; const diskLogFormatter = (message) => { // trailing space after date is delimiter between date and message const linePrefix = `${new Date().toISOString()} `; return message.replace(START_OF_LINE, linePrefix); }; const writeStream = (0, fs_1.createWriteStream)(null, { fd }); const onError = err => console.error(`Error writing to log file: ${err.message}`); writeStream.on("error", onError); const log = (message, ...optionalParams) => { // we are logging to a file, but we still need to write to console baseLog(message, ...optionalParams); const formattedMessage = (0, util_1.format)(message, ...optionalParams); writeStream.write(diskLogFormatter(formattedMessage) + os_1.EOL); }; return { log, close: () => new Promise((resolve, reject) => { writeStream.close(err => { if (err) { reject(err); } else { resolve(); } }); }) }; } else { return { log: baseLog, close: async () => { } }; } } exports.createLogger = createLogger; //# sourceMappingURL=logger.js.map