nestjs-components icon indicating copy to clipboard operation
nestjs-components copied to clipboard

Graphql Support for LoggingInterceptor

Open agmoss opened this issue 3 years ago • 3 comments

Currently, the LoggingInterceptor does not work with graphql. Internal calls to intercept, logNext, and logError use the base ExecutionContext from nest without first evaluating the current application context.

Accessors for the in-flight request object are different depending on the application context. For rest they look like:

const req: Request = context.switchToHttp().getRequest<Request>();
const res: Response = context.switchToHttp().getResponse<Response>();
const { method, url } = req;

as you have in logNext

In graphql it looks like

const method = context.getArgs()[2].req.method;
const url = context.getArgs()[2].req.url;

(at least this is the cleanest way I have been able to access these)

As such, the use of rest style of access yields the following logs when in the graphql context:

[LoggingInterceptor - undefined - undefined - undefined] Outgoing response - undefined - undefined - undefined 

Anyway, if you want to support gql with this interceptor I would be open to making a pr! Or perhaps I could add a new one that is specific for graphql.

This is a great assembly of nest utils!

agmoss avatar Jun 18 '22 00:06 agmoss

Hey @agmoss,

Indeed, we do not handle graphQL for now but it could be nice to handle it. Unfortunately, I can't tell you when we can implement graphQL support.

I think we could create an option for graphQL, no need to create a new package. If you wish to, you can of course contribute and open a new PR to handle this 😁

ccoeurderoy avatar Jun 18 '22 14:06 ccoeurderoy

Sounds great @ccoeurderoy! I will take a stab at a pr. Cheers

agmoss avatar Jun 18 '22 18:06 agmoss