From 541ca12397ed05b57ac937b5c8bca8bc262ace12 Mon Sep 17 00:00:00 2001 From: Tobias <34998750+Tobi98@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:57:11 +0200 Subject: [PATCH] Reduce access log spam (v4) (#2020) Backport #1968 into v4. Co-authored-by: Tobias Kuhn Co-authored-by: Johannes Obermair <48853629+johnnyomair@users.noreply.github.com> --- .changeset/purple-phones-visit.md | 5 +++++ demo/api/src/app.module.ts | 10 +++++++++- .../cms-api/src/access-log/access-log.interceptor.ts | 11 ++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 .changeset/purple-phones-visit.md diff --git a/.changeset/purple-phones-visit.md b/.changeset/purple-phones-visit.md new file mode 100644 index 0000000000..2f702e5652 --- /dev/null +++ b/.changeset/purple-phones-visit.md @@ -0,0 +1,5 @@ +--- +"@comet/cms-api": minor +--- + +Enhanced the access log functionality to now skip logging for field resolvers in GraphQL context. This change improves the readability and relevance of our logs by reducing unnecessary entries. diff --git a/demo/api/src/app.module.ts b/demo/api/src/app.module.ts index 2b307056fd..a6eaa9d49c 100644 --- a/demo/api/src/app.module.ts +++ b/demo/api/src/app.module.ts @@ -132,7 +132,15 @@ export class AppModule { PredefinedPageModule, CronJobsModule, ProductsModule, - AccessLogModule, + AccessLogModule.forRoot({ + shouldLogRequest: ({ user }) => { + // Ignore system user + if (user === true) { + return false; + } + return true; + }, + }), ], }; } diff --git a/packages/api/cms-api/src/access-log/access-log.interceptor.ts b/packages/api/cms-api/src/access-log/access-log.interceptor.ts index 86f0fbebba..8b68fb540b 100644 --- a/packages/api/cms-api/src/access-log/access-log.interceptor.ts +++ b/packages/api/cms-api/src/access-log/access-log.interceptor.ts @@ -23,6 +23,11 @@ export class AccessLogInterceptor implements NestInterceptor { if (requestType === "graphql") { const graphqlExecutionContext = GqlExecutionContext.create(context); const graphqlContext = graphqlExecutionContext.getContext(); + const gqlInfo = graphqlExecutionContext.getInfo(); + + if (this.isResolvingGraphQLField(gqlInfo)) { + return next.handle(); + } if ( this.shouldLogRequest && @@ -38,7 +43,6 @@ export class AccessLogInterceptor implements NestInterceptor { this.pushUserToRequestData(graphqlContext.req.user, requestData); const gqlArgs = { ...graphqlExecutionContext.getArgs() }; - const gqlInfo = graphqlExecutionContext.getInfo(); if (gqlInfo.operation.operation === "mutation") { delete gqlArgs["input"]; @@ -84,4 +88,9 @@ export class AccessLogInterceptor implements NestInterceptor { requestData.push(`user: ${user.id} (${user.name})`); } } + + private isResolvingGraphQLField(gqlInfo: GraphQLResolveInfo): boolean { + const parentType = gqlInfo.parentType.name; + return parentType !== "Query" && parentType !== "Mutation"; + } }