This middleware integrates Hono with Sentry. It captures exceptions and sends them to the specified Sentry data source name (DSN) using toucan-js.
npm i hono @hono/sentry
If you're running your application on Cloudflare Workers, set a binding value named SENTRY_DSN
, which will be used as the DSN. For instance, during development, you can specify this in .dev.vars
:
SENTRY_DSN=<Your DSN>
On other platforms, you can directly provide the DSN by passing it as an option:
sentry({
dsn: `<Your DSN>`,
})
import { Hono } from 'hono'
import { sentry } from '@hono/sentry'
const app = new Hono()
app.use('*', sentry())
app.get('/', (c) => c.text('foo'))
export default app
Options:
import type { Options as ToucanOptions } from 'toucan-js'
type Options = Omit<ToucanOptions, 'request' | 'context'>
import { serve } from 'https://deno.land/std/http/server.ts'
import { sentry } from 'npm:@hono/sentry'
import { Hono } from 'https://deno.land/x/hono/mod.ts'
const app = new Hono()
app.use('*', sentry({ dsn: 'https://xxxxxx@xxx.ingest.sentry.io/xxxxxx' }))
app.get('/', (c) => c.text('foo'))
serve(app.fetch)
You can retrieve an instance of Sentry
using c.get('sentry')
.
app.onError((e, c) => {
c.get('sentry').setContext('character', {
name: 'Mighty Fighter',
age: 19,
attack_type: 'melee',
})
c.get('sentry').captureException(e)
return c.text('Internal Server Error', 500)
})
- Samuel Lippert - https://github.com/sam-lippert
- Yusuke Wada - https://github.com/yusukebe
MIT