@aarconada/urserver
Version:
Basic Server definitions to develope REST API with a node + express Server
158 lines (144 loc) • 6.51 kB
JavaScript
/**
* Created by ubuntu on 20/12/18.
*/
;
const server = require('./server')();
const _ = require('lodash');
const util = require('util');
const moment = require('moment');
var currentLog = '';
module.exports.log = function(logName, ...data) {
if (!_.isUndefined(server.configuration.logger) && server.configuration.logger.enabled) {
currentLog = logName;
log.apply(this, data);
}
};
module.exports.logDebug = function() {
if (!_.isUndefined(server.configuration.logger) && server.configuration.logger.enabled && server.configuration.logger.logDebug) {
currentLog = 'debug';
log.apply(this, arguments);
}
};
module.exports.initialize = function() {
if (!_.isUndefined(server.configuration.logger) && server.configuration.logger.enabled && server.configuration.logger.endpoints && server.configuration.logger.endpoints.enabled) {
server.debug('Generating Logger endpoints at ', server.configuration.logger.endpoints.route);
const endpointsHasRoles = server.configuration.logger.endpoints.allowedRoles.length &&
server.configuration.logger.endpoints.allowedRoles.length !== null &&
server.configuration.logger.endpoints.allowedRoles.length > 0;
server.endpointmanager.addEndpoint({
name : 'Obtain server logs',
description : 'This endpoiont allows to obtain the server existing logs',
route : server.configuration.logger.endpoints.route,
method : server.utils.method.GET,
callback : function(req, res, next, allowedResponses) {
var logPath = server.fileSystem.getLogsPath();
return server.fileSystem.readDirectory(logPath);
},
token : {
required : endpointsHasRoles,
ignoreExpiration: false
},
session : {
required : endpointsHasRoles,
allowedRoles: server.configuration.logger.endpoints.allowedRoles
},
responses : {
unauthorized: server.defaultResponses.unauthorized
},
success : {
},
transactional: false
});
server.endpointmanager.addEndpoint({
name : 'Obtain log files',
description : 'This endpoiont allows to obtain the different log files for an existing log container',
route : server.configuration.logger.endpoints.route + '/:logName',
method : server.utils.method.GET,
callback : function(req, res, next, allowedResponses) {
var logPath = server.fileSystem.getLogsPath();
logPath = server.fileSystem.getSubFolderPath(logPath, req.params.logName);
return server.fileSystem.readDirectory(logPath);
},
token : {
required : endpointsHasRoles,
ignoreExpiration: false
},
session : {
required : endpointsHasRoles,
allowedRoles: server.configuration.logger.endpoints.allowedRoles
},
responses : {
unauthorized: server.defaultResponses.unauthorized
},
parameters: [
{
name: 'logName',
dataType: server.utils.dataType.STRING,
parameterType: server.utils.parameterType.PARAM,
required: true,
description: 'The name of the log container'
}
],
success : {
},
transactional: false
});
server.endpointmanager.addEndpoint({
name : 'Obtain log content',
description : 'This endpoiont allows to obtain the content of a specifig log files for an existing log container',
route : server.configuration.logger.endpoints.route + '/:logName/:logFile',
method : server.utils.method.GET,
callback : function(req, res, next, allowedResponses) {
var logPath = server.fileSystem.getLogsPath();
logPath = server.fileSystem.getSubFolderPath(logPath, req.params.logName);
logPath += req.params.logFile;
return server.fileSystem.readAbsoluteFile(logPath);
},
token : {
required : endpointsHasRoles,
ignoreExpiration: false
},
session : {
required : endpointsHasRoles,
allowedRoles: server.configuration.logger.endpoints.allowedRoles
},
responses : {
unauthorized: server.defaultResponses.unauthorized
},
parameters: [
{
name: 'logName',
dataType: server.utils.dataType.STRING,
parameterType: server.utils.parameterType.PARAM,
required: true,
description: 'The name of the log container'
},
{
name: 'logFile',
dataType: server.utils.dataType.STRING,
parameterType: server.utils.parameterType.PARAM,
required: true,
description: 'The name of the log file'
}
],
success : {
},
transactional: false
});
}
};
function log() {
if (!_.isUndefined(server.configuration.logger) && server.configuration.logger.enabled) {
var logPath = server.fileSystem.getLogsPath();
logPath = server.fileSystem.getSubFolderPath(logPath, currentLog);
var logContent = server.fileSystem.readDirectory(logPath);
while(logContent.length > server.configuration.logger.maxLogFiles) {
server.fileSystem.deleteFile(logPath, logContent[0]);
logContent = server.fileSystem.readDirectory(logPath);
console.log(logContent);
}
logPath += moment().format('YYYYMMDD') + '.log';
var data = util.format.apply(util, arguments) + '\n';
server.fileSystem.appendToFile(logPath, data);
}
}