@wbg-mde/repository
Version:
Managing all common method for file system CRUD operations.
90 lines (89 loc) • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const mkdirp = require("mkdirp");
const path = require("path");
const model_1 = require("@wbg-mde/model");
const resource_path_1 = require("../resource-path/resource-path");
const app_repo_utility_1 = require("./app.repo.utility");
const winston = require('winston');
let logger;
class ApplicationLogger {
constructor() {
this.resourcePath = new resource_path_1.ResourcePath();
this.initAppLogger();
}
initAppLogger() {
try {
let filePaths = this.resourcePath.getLogFilePath();
this.createMainPaths(filePaths);
let finalPath = this.resourcePath.getTodaysLog();
if (!fs.existsSync(finalPath)) {
fs.writeFile(finalPath, '{"level":"info","message":"Log file created"}', (err) => {
if (err) {
return true;
}
});
}
logger = winston.createLogger({
format: winston.format.combine(winston.format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}), winston.format.json()),
transports: [
new winston.transports.File({
filename: finalPath
})
]
});
}
catch (e) {
return true;
}
}
createMainPaths(paths) {
if (!fs.existsSync(paths[0])) {
mkdirp.sync(paths[0]);
}
}
removeOlderLogs(filePath) {
try {
fs.readdir(filePath, function (err, files) {
files.forEach(function (file, index) {
fs.stat(path.join(filePath, file), function (err, stat) {
var endTime, now;
if (err) {
return console.error(err);
}
now = new Date().getTime();
endTime = new Date(stat.ctime).getTime() + 2.592e+8;
if (now > endTime) {
app_repo_utility_1.App_Repository_Utility.deleteFolder(filePath);
}
});
});
});
}
catch (e) {
return true;
}
}
static writeLog(levels, log) {
try {
switch (levels) {
case model_1.LogLevels.error:
logger.error(log);
break;
case model_1.LogLevels.info:
logger.info(log);
break;
default:
logger.info(log);
break;
}
}
catch (e) {
return true;
}
}
}
exports.ApplicationLogger = ApplicationLogger;