@jackdbd/hapi-logger-plugin
v1.2.0
Published
Hapi plugin for a JSON logger
Downloads
2
Readme
@jackdbd/hapi-logger-plugin
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. |