@ganache/utils
Version:
Utility functions for @ganache packages
49 lines • 1.89 kB
JavaScript
;
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