# Failbot JS

A [Failbotg](https://github.com/github/failbotg) client for JavaScript.

## Installation

This package is published to npm as `@github/failbot`.

```shell
❯ npm install @github/failbot
```

## Usage:

```javascript
const {Failbot, HTTPBackend, LogBackend} = require('@github/failbot')

const failbot = new Failbot({
  app: 'my-cool-app',
  backends: [new HTTPBackend({haystackURL: process.env.HAYSTACK_URL}), new LogBackend({log: console.log.bind(console)})]
})

try {
  riskyThing()
} catch (error) {
  failbot.report(error, {
    extra: 'metadata',
    can: 'be',
    passed: 'as well'
  })
}
```

In order to attribute reported exceptions to service catalog services, the `catalog_service` tag is included in all exceptions reported via this library. Since all moda deployments have an `OTEL_SERVICE_NAME` environment variable, `catalog_service` is included in every failbot report payload as the value of `OTEL_SERVICE_NAME`.

You should not need to override this value but, if you do, you can pass `catalogService` to the `Failbot` constructor: `const failbot = new Failbot({app: 'my-app', catalogService: 'my-catalog', backends: ...})`. Be aware that overriding this value may make it impossible for your team to receive alerts related to high volumes of exceptions.
