GithubHelp home page GithubHelp logo

addityasingh / graphql-pino-middleware Goto Github PK

View Code? Open in Web Editor NEW
13.0 2.0 0.0 359 KB

GraphQL middleware to instrument resolvers with pino logger

License: MIT License

TypeScript 100.00%
logging logger graphql-middleware pino graphql graphql-pino-middleware

graphql-pino-middleware's Introduction

graphql-pino-middleware ๐Ÿš€

NPM

GraphQL middleware to augment resolvers with pino logger. This middleware intends to remove cross-cutting concerns from the application by providing logger in the resolver context.

build downloads version

Table of contents

Getting started

  1. Install the graphql-pino-middleware and graphql-middleware packages
yarn add graphql-pino-middleware
yarn add graphql-middleware
  1. Create the pino logger and configure the middleware with options
import pino from "pino";
import graphqlPinoMiddleware from "graphql-pino-middleware";

const logger = pino();

// create the graphql-pino-middleware
const loggerMiddleware = graphqlPinoMiddleware({
  logger
});
  1. Apply the middleware to the schema
import express from "express";
import graphqlExpressHttp from "express-graphql";
import { applyMiddleware } from "graphql-middleware";
import { makeExecutableSchema } from "graphql-tools";

// Construct a schema, using GraphQL schema language
const typeDefs = `
  type Query {
    hello(name: String): String
  }
`;

const resolvers = {
  Query: {
    hello: (parent, args, context) => {
      const result = `Hello ${args.name ? args.name : "world"}!`;
      // The logger is available in the context now
      context.logger.info({
        helloResolver: result
      });
      return result;
    }
  }
};

// apply the middleware to the schema
const schema = applyMiddleware(
  makeExecutableSchema({ typeDefs, resolvers }),
  loggerMiddleware
);

// Use the schema in your graphql server
const app = express();
app.use(
  "/graphql",
  graphqlExpressHttp({
    schema: schema,
    rootValue: resolvers,
    graphiql: true
  })
);

API

middleware = graphqlPinoMiddleware([options])

  • options
    • logger: An optional pino logger
    • hooks: Lost of PreResolve and PostResolve hooks

Refer the examples for more usage examples

Contributing

graphql-pino-middleware package intends to support contribution and support and thanks the open source community to making it better. Read below to learn how you can improve this repository and package

Code of Conduct

Please check the CODE OF CONDUCT which we have in place to ensure safe and supportive environment for contributors

Contributing

Feel free to create issues and bugs in the issues section using issues and bugs template. Please also ensure that there are not existing issues created on the same topic

Good first issues

Please check issues labeled #good-first-issues under the issues section

Licence

graphql-pino-middleware uses MIT License

graphql-pino-middleware's People

Contributors

addityasingh avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

graphql-pino-middleware's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.