UNPKG

@aarconada/urserver

Version:

Basic Server definitions to develope REST API with a node + express Server

158 lines (144 loc) 6.51 kB
/** * Created by ubuntu on 20/12/18. */ 'use strict'; 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); } }