UNPKG

@tableau/taco-toolkit

Version:
93 lines 7.25 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.shouldRotateFile = exports.FileWriter = void 0; var fs_1 = __importDefault(require("fs")); var path_1 = __importDefault(require("path")); var utils_1 = require("../utils"); var writer_1 = require("./writer"); var FileWriter = /** @class */ (function (_super) { __extends(FileWriter, _super); function FileWriter(config) { var _this = _super.call(this, config) || this; _this.dateCreated = new Date(); _this.dirPath = config.dirPath; _this.baseFilename = config.filename; _this.sourceName = config.sourceName; createLogDirIfNotExist(_this.dirPath); _this.writeStream = createStream(_this.dirPath, getFullFilename(_this.baseFilename, _this.dateCreated)); return _this; } FileWriter.prototype.rotateFile = function () { this.dateCreated = new Date(); this.writeStream = createStream(this.dirPath, getFullFilename(this.baseFilename, this.dateCreated)); }; FileWriter.prototype.log = function (message, level, options) { if (!this.isLoggable(level)) { return; } if (shouldRotateFile(this.dateCreated)) { this.rotateFile(); } var logMessage = getLogMessage(message, level, this.sourceName, options); this.writeStream.write(logMessage); }; return FileWriter; }(writer_1.Writer)); exports.FileWriter = FileWriter; function getFullFilename(baseName, date) { return "".concat(baseName, ".").concat(date.toISOString().substring(0, 10), ".log"); } //assume different date if the day of week OR day of month differs from dateCreated field function shouldRotateFile(dateCreated) { var now = new Date(); var createdDay = dateCreated.getUTCDay(); var createdDate = dateCreated.getUTCDate(); return createdDay !== now.getUTCDay() || createdDate !== now.getUTCDate(); } exports.shouldRotateFile = shouldRotateFile; function createLogDirIfNotExist(dirPath) { if (!fs_1.default.existsSync(dirPath)) { fs_1.default.mkdirSync(dirPath, { recursive: true }); } } function createStream(dirPath, filename) { var filePath = path_1.default.resolve(dirPath, filename); return fs_1.default .createWriteStream(filePath, { flags: 'a', autoClose: true, }) .on('error', function (error) { // when file writer fails, print out error the console. console.error('An error occurred while writing to log file.', error); }); } function getLogMessage(message, level, sourceName, options) { var timestamp = (0, utils_1.getTimestampWithLogOptions)(options); return (JSON.stringify({ ts: new Date(timestamp).toISOString(), pid: process.pid.toString(), sev: level.toString(), sourceName: sourceName, v: message.replace(/\r?\n/g, ' '), }) + '\n'); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvbG9nZ2VyL3dyaXRlci9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUFvQztBQUNwQyw4Q0FBdUI7QUFJdkIsa0NBQXFEO0FBQ3JELG1DQUErQztBQVEvQztJQUFnQyw4QkFBTTtJQU9wQyxvQkFBWSxNQUF3QjtRQUFwQyxZQUNFLGtCQUFNLE1BQU0sQ0FBQyxTQU9kO1FBTkMsS0FBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO1FBQzdCLEtBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQTtRQUM3QixLQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUE7UUFDbkMsS0FBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFBO1FBQ25DLHNCQUFzQixDQUFDLEtBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwQyxLQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxLQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxLQUFJLENBQUMsWUFBWSxFQUFFLEtBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBOztJQUNyRyxDQUFDO0lBRU8sK0JBQVUsR0FBbEI7UUFDRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBRUQsd0JBQUcsR0FBSCxVQUFJLE9BQWUsRUFBRSxLQUFlLEVBQUUsT0FBb0I7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxD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