diff --git a/CHANGELOG.md b/CHANGELOG.md index dd718b4..ef6e799 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # NDC TypeScript SDK Changelog ## Unreleased changes -- Logging of requests and responses has been improved to include the function name if available ([#51](https://github.com/hasura/ndc-sdk-typescript/pull/51)) +- Logging of requests, responses and errors has been improved to include the collection/operation name if available ([#51](https://github.com/hasura/ndc-sdk-typescript/pull/51), [#54](https://github.com/hasura/ndc-sdk-typescript/pull/54)) ## [8.2.0] - 2025-07-18 - Added support for automatically returning compressed responses using gzip or deflate ([#47](https://github.com/hasura/ndc-sdk-typescript/pull/47)) diff --git a/flake.nix b/flake.nix index a565c62..5c5891b 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "v3-console development dependencies"; + description = "ndc-sdk-typescript development dependencies"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; diff --git a/src/server.ts b/src/server.ts index 0e2b32b..0a93632 100644 --- a/src/server.ts +++ b/src/server.ts @@ -89,32 +89,33 @@ const safeRequestFields = (request: FastifyRequest) => ({ url: request.url, }); -// PreHandler hooks to bind function name to request logger and log incoming request +// PreHandler hook to bind ndc collection name to request logger and log incoming request const bindQueryFunctionToLogger = ( request: FastifyRequest<{ Body: QueryRequest }>, reply: FastifyReply, done: () => void ) => { - const functionName = request.body.collection; - if (functionName) { - request.log = request.log.child({ function: functionName }); - reply.log = reply.log.child({ function: functionName }); + const collectionName = request.body.collection; + if (collectionName) { + request.log = request.log.child({ "ndc-collection": collectionName }); + reply.log = reply.log.child({ "ndc-collection": collectionName }); } - request.log.info({ req: safeRequestFields(request) }, "incoming function request"); + request.log.info({ req: safeRequestFields(request) }, "incoming query request"); done(); }; +// PreHandler hook to bind ndc operation name to request logger and log incoming request const bindMutationFunctionToLogger = ( request: FastifyRequest<{ Body: MutationRequest }>, reply: FastifyReply, done: () => void ) => { - const functionName = request.body.operations?.[0]?.name; - if (functionName) { - request.log = request.log.child({ function: functionName }); - reply.log = reply.log.child({ function: functionName }); + const operationName = request.body.operations?.[0]?.name; + if (operationName) { + request.log = request.log.child({ "ndc-operation": operationName }); + reply.log = reply.log.child({ "ndc-operation": operationName }); } - request.log.info({ req: safeRequestFields(request) }, "incoming procedure request"); + request.log.info({ req: safeRequestFields(request) }, "incoming mutation request"); done(); }; @@ -387,9 +388,9 @@ export async function startServer( } ); - server.setErrorHandler(function(error, _request, reply) { + server.setErrorHandler(function(error, request, reply) { // pino trace instrumentation will add trace information to log output - this.log.error(error); + request.log.error(error); if (error.validation) { reply.status(400).send({