@piggly/fastify-chassis
Version:
An ESM/CommonJS toolkit to help you to do common operations in your back-end applications with Fastify and NodeJS.
67 lines • 2.36 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LogResponseHook = void 0;
const tslib_1 = require("tslib");
const ddd_toolkit_1 = require("@piggly/ddd-toolkit");
const debug_1 = tslib_1.__importDefault(require("debug"));
/**
* Log the response of the request.
*
* I will log only when debug mode is enabled.
* LoggerService will handle requests/responses if debug level is enabled as well.
*
* The best way for logging requests/response should be at nGINX or similar.
*
* @param {FastifyInstance<Server>} app The Fastify instance.
* @param {Environment} env The environment.
* @returns {void}
* @since 7.0.0
* @since 7.2.1 Added debug mode.
* @author Caique Araujo <caique@piggly.com.br>
*/
const LogResponseHook = (app, env) => {
if (env && env.debug !== true) {
return;
}
app.addHook('onRequest', async (request) => {
const data = {
body: request.body ?? {},
headers: request.headers ?? {},
hostname: request.hostname,
id: request.id,
method: request.method,
params: request.params ?? {},
query: request.query ?? {},
url: request.url,
};
(0, debug_1.default)('http:server')(`➡️ [${data.method}] "${data.url}"`, {
body: data.body,
headers: data.headers,
id: data.id,
params: data.params,
query: data.query,
});
ddd_toolkit_1.LoggerService.softResolve().debug('HTTP_REQUEST', data);
});
app.addHook('onSend', async (request, reply, payload) => {
const data = {
body: payload ?? {},
duration: reply.elapsedTime,
headers: reply.getHeaders(),
hostname: request.hostname,
id: request.id,
method: request.method,
status: reply.statusCode,
url: request.url,
};
(0, debug_1.default)('http:server')(`⬅️ [${data.method}/${data.status}] "${data.url}"`, {
body: data.body,
duration: data.duration,
headers: data.headers,
id: data.id,
});
ddd_toolkit_1.LoggerService.softResolve().debug('HTTP_RESPONSE', data);
});
};
exports.LogResponseHook = LogResponseHook;
//# sourceMappingURL=LogResponseHook.js.map