Two main components involved in the logging implementation - an audit middleware and a global exception handler. The audit middleware is responsible for generating information about the request and logging out the necessary information. The global exception handler is used for catching any exception raised from the application and converts the exception into a proper response format. The implementation as a whole takes inspiration from the audit logging that occurs in microcosm_flask.