mice-log
Version:
logging component - mice style
27 lines (26 loc) • 1.62 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.clearLog = exports.readLog = exports.writeLog = exports.isSeverity = exports.formatFileName = exports.categories = exports.severities = void 0;
const promises_1 = __importDefault(require("fs/promises"));
const path_1 = __importDefault(require("path"));
const LOG_ENCODING = 'utf8';
exports.severities = ['verbose', 'info', 'warning', 'error'];
exports.categories = ['error', 'app'];
const formatFileName = (basePath, category) => path_1.default.format({ dir: basePath, name: category, ext: '.log' });
exports.formatFileName = formatFileName;
const timeStamp = () => new Date();
const formatRecord = (severity, message) => JSON.stringify([timeStamp(), severity, message]);
const withNewLine = (value) => `${value}\n`;
const isSeverity = (value) => exports.severities.indexOf(value) >= 0;
exports.isSeverity = isSeverity;
const writeLog = async (basePath, severity, category, message) => promises_1.default.appendFile((0, exports.formatFileName)(basePath, category), withNewLine(formatRecord(severity, message)));
exports.writeLog = writeLog;
const readLog = async (basePath, category) => promises_1.default.readFile((0, exports.formatFileName)(basePath, category), {
encoding: LOG_ENCODING,
});
exports.readLog = readLog;
const clearLog = (basePath, category) => promises_1.default.truncate((0, exports.formatFileName)(basePath, category));
exports.clearLog = clearLog;