@jackdbd/hapi-logger-plugin
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

@jackdbd/hapi-logger-plugin

npm version Snyk Vulnerabilities for npm package

Hapi plugin that uses tags-logger for logging events emitted by server.log() and request.log().

Installation

npm install @jackdbd/hapi-logger-plugin

Usage

structured logging

import logger from '@jackdbd/hapi-logger-plugin'

export const app = async (config) => {

  const server = Hapi.server({ port: 8080 })

  await server.register({ plugin: logger })

  return { server }
}

unstructured logging

import logger from '@jackdbd/hapi-logger-plugin'

export const app = async (config) => {

  const server = Hapi.server({ port: 8080 })

  await server.register({
    plugin: logger,
    options: {
      namespace: 'my-app'
    }
  })

  return { server }
}

example: Cloud Run service

You likely want to use unstructured logging when the code is running on Cloud Run, and unstructured logging when it's running locally (regardless whether it a containerized Node.js app or a containerized one).

Also, you might want to validate the log statements only in development.

Here is a configuration you might try:

import logger from '@jackdbd/hapi-logger-plugin'

export const app = async (config) => {

  const server = Hapi.server({ port: 8080 })

  await server.register({
    plugin: logger,
    options: {
      // when the code runs as a Cloud Run service, don't set `namespace`
      namespace: process.env.K_SERVICE ? undefined : 'my-app',
      // when in production, don't validate log statements
      should_validate_log_statements: process.env.NODE_ENV === 'production' ? false : true
    }
  })

  return { server }
}

Configuration

Environment variables

Environment variable Explanation
DEBUG You must set this environment variable if you want to use unstructured logging and see some output. For example, if you set namespace: 'my-app', Hapi server.log() events will be logged to the my-app/log-event namespace, and Hapi request.log() events will be logged to the my-app/request-event namespace. So, for example, DEBUG=my-app/* will log all events, while DEBUG=my-app/request-event or DEBUG=my-app/*,-my-app/log-event will log only the request.log() events.

Options

Option Default Explanation
channels ['app'] The event channels you want to log.
namespace undefined The namespace for unstructured logging. This option has no effect when using structured logging.
should_use_emoji_for_severity true Whether to use an emoji for the severity level, when using unstructured logging. This option has no effect when using structured logging.
should_validate_log_statements false when NODE_ENV is 'production', true otherwise Whether each log statement should be validated against a Joi schema.

Package Sidebar

Install

npm i @jackdbd/hapi-logger-plugin

Weekly Downloads

0

Version

1.2.0

License

MIT

Unpacked Size

32.2 kB

Total Files

32

Last publish

Collaborators

  • jackdbd