1.2.0 • Published 1 year ago

@jackdbd/hapi-logger-plugin v1.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@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 variableExplanation
DEBUGYou 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

OptionDefaultExplanation
channels['app']The event channels you want to log.
namespaceundefinedThe namespace for unstructured logging. This option has no effect when using structured logging.
should_use_emoji_for_severitytrueWhether to use an emoji for the severity level, when using unstructured logging. This option has no effect when using structured logging.
should_validate_log_statementsfalse when NODE_ENV is 'production', true otherwiseWhether each log statement should be validated against a Joi schema.
1.2.0

1 year ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago

1.2.0-canary.1

2 years ago

1.1.0-canary.1

2 years ago

1.0.0-canary.4

2 years ago

1.1.1-canary.1

2 years ago

1.0.0-canary.3

2 years ago

1.0.0-canary.2

2 years ago

1.0.0-canary.1

2 years ago