Skip to content

adityadarma/adonis-logger-slack

Repository files navigation

Adonis Slack for Logger

gh-workflow-image npm-image npm-downloads license-image

Adonis Slack Logger is a feature that allows developers to store application logger to slack. This feature provides a structured and organized approach to managing application logs, making it easier to query and analyze them.

Installation

node ace add @adityadarma/adonis-logger-slack

Usage

Capturing Errors

You can capture errors by calling the sendException method on the instance of slack inside your exception handler.

export default class HttpExceptionHandler extends ExceptionHandler {
  // ...

  async report(error: unknown, ctx: HttpContext) {
    if (this.shouldReport(error as any)) {
      ctx?.slack?.sendException(error)
    }

    return super.report(error, ctx)
  }
}

Adding Integrations

Logger provides multiple integrations to enhance the data captured by driver. You can add integrations by changing the config inside the configuration config/logger.ts.

// config/logger.ts

slack: {
  enabled: true,
  name: env.get('APP_NAME', 'AdonisJS'),
  level: env.get('LOG_LEVEL', 'error'),
  url: env.get('LOG_SLACK_WEBHOOK_URL', ''),
  redact: {
    paths: ['password', '*.password']
  },
  transport: {
    targets: targets()
      .pushIf(!app.inProduction, targets.pretty())
      .pushIf(app.inProduction, targets.file({ destination: 1 }))
      // Optional to send log anyware
      .push({
        target: '@youngkiu/pino-slack-webhook',
        level: 'error',
        options: {
          webhookUrl: env.get('LOG_SLACK_WEBHOOK_URL', ''),
          channel: env.get('LOG_SLACK_WEBHOOK_CHANNEL', '#error_notifications'),
          username: 'webhookbot',
          icon_emoji: ':ghost:'
        }
      })
      .toArray()
  }
},

*Note: please install @youngkiu/pino-slack-webhook if you want send slack anyware

Create log anyware

via service

import logger from '@adonisjs/core/services/logger'

router.get('/logger', async () => {
  logger.info('dfdgdg')
  ......
})

via HttpContext

router.get('/logger', async ({logger}: HttpContext) => {
  logger.info('dfdgdg')
  .....
})

License

This package is open-sourced software licensed under the MIT license.

About

Send your log to slack

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •