Hapi plugin that uses tags-logger for logging events emitted by server.log() and request.log().
npm install @jackdbd/hapi-logger-plugin
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 }
}
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 }
}
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 }
}
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. |
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. |
Generated using TypeDoc