@szegedsw/lib-node
Version:
A little framework published by Szeged Software Zrt. in order to enhance api endpoint security and create reuseable code. Email module, Logging system, and much more. Further improvements are expected.
61 lines • 2.56 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.loggingMiddlewares = void 0;
const fs = __importStar(require("fs"));
const morgan_1 = __importDefault(require("morgan"));
const path_1 = require("path");
const config_1 = require("../config/config");
const endMiddleware = async (req, res, next) => {
const [defaultWrite, defaultEnd] = [res.write, res.end];
const chunks = [];
res.write = (...restArgs) => {
chunks.push(Buffer.from(restArgs[0]));
return defaultWrite.apply(res, restArgs);
};
res.end = (...restArgs) => {
if (restArgs[0]) {
chunks.push(Buffer.from(restArgs[0]));
}
res.locals.size = Buffer.concat(chunks).length;
if (config_1.env.logDirectory) {
fs.appendFile(`${config_1.env.logDirectory}${path_1.sep}${process.pid}.log`, `${new Date().toISOString()} ${req.url} ${req.method} ${res.locals.size}\n`, () => null);
}
// process.pid
// response body
// console.log(JSON.parse(Buffer.concat(chunks).toString("utf8")));
return defaultEnd.apply(res, restArgs);
};
next();
};
function loggingMiddlewares() {
morgan_1.default.token("size", (_req, res) => res.locals.size);
return [
endMiddleware,
morgan_1.default(":date[iso] :method :url HTTP/:http-version - :req[content-length] B", { immediate: true }),
morgan_1.default(":date[iso] :method :url :status - :size B :total-time[1] ms"),
];
}
exports.loggingMiddlewares = loggingMiddlewares;
//# sourceMappingURL=logging.js.map