1.2.2 • Published 5 months ago
@hono/sentry v1.2.2
Sentry Middleware for Hono
This middleware integrates Hono with Sentry. It captures exceptions and sends them to the specified Sentry data source name (DSN) using toucan-js.
Installation
npm i hono @hono/sentryConfiguration
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>`,
})How to Use
import { Hono } from 'hono'
import { sentry } from '@hono/sentry'
const app = new Hono()
app.use('*', sentry())
app.get('/', (c) => c.text('foo'))
export default appOptions:
import type { Options as ToucanOptions } from 'toucan-js'
type Options = Omit<ToucanOptions, 'request' | 'context'>For Deno Users
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)Accessing an instance of Sentry
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)
})Authors
- Samuel Lippert - https://github.com/sam-lippert
- Yusuke Wada - https://github.com/yusukebe
License
MIT