Add pinoJS logs to nuxt
- Server and browser support
- Fast
- Easy to use and setup
- JSON structured logs
- Add
nuxt-pino-log
dependency to your project
yarn add nuxt-pino-log
npm install nuxt-pino-log
- Add
nuxt-pino-log
to themodules
section ofnuxt.config.js
// nuxt.config.js
{
modules: [
// Simple usage
'nuxt-pino-log',
// With options
['nuxt-pino-log', { /* module options */ }]
]
}
- In nuxt middleware
export default ({ $logger }) => {
// This will be appear in the browser and server terminal
$logger.info('Logging in middleware')
}
- In nuxt component, store and pages
this.$logger.info('Logging')
See the example folder for more.
- Following are the default configurations provided to the logger:
defaults = {
disabled: false,
disableClientSide: false,
disableServerSide: false,
skipRequestMiddlewareHandler: false,
skipErrorMiddlewareHandler: false,
clientOptions: {
browser: {
asObject: true
}
}
}
- The above default configurations can be customized by passing options through
nuxt.config.js
file as following:
nuxtPinoLog: {
// To disable all the logging
disabled: true,
// To disable client side loggging
disableClientSide: true,
// To disable server side logging
disableServerSide: true,
// Settings to determine if default handlers should be
// registered for requests and errors respectively.
// Set to `true` to skip request logging
skipRequestMiddlewareHandler: true,
// Set to `true` to skip error logging
skipErrorMiddlewareHandler: true,
clientOptions: {
// configure pino client with the configrations from https://github.com/pinojs/pino/blob/master/docs/browser.md
},
serverOptions: {
// configure pino server logger with the configrations from https://github.com/pinojs/pino/blob/master/docs/browser.md
},
// configure `pino-http`, see more https://github.com/pinojs/pino-http
pinoHttpOptions: {
serializers: {
res: (res) => ({
statusCode: res.statusCode,
}),
}
}
},
You may want to redact some headers, that you don't want to appear in the logs.
nuxt-pino-log
provides a default list that you can use and even extend.
Example:
// nuxt.config.js
const { redactDefault } = require("nuxt-pino-log");
module.exports = {
nuxtPinoLog: {
serverOptions: {
name: "Logger",
redact: redactDefault,
}
}
}
Because the logs are json, during development you may want to make them prettier and
more developer friendly. You can use pino-pretty
for that.
yarn add --dev pino-pretty
Configure your dev in your package.json
// package.json
{
"scripts": {
"dev": "nuxt example | pino-pretty"
}
}
- Clone this repository
- Install dependencies using
yarn install
ornpm install
- Start development server using
npm run dev
Copyright (c) KPN