Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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))
Expand Down
2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
description = "v3-console development dependencies";
description = "ndc-sdk-typescript development dependencies";

inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
Expand Down
27 changes: 14 additions & 13 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
};

Expand Down Expand Up @@ -387,9 +388,9 @@ export async function startServer<Configuration, State>(
}
);

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({
Expand Down