Skip to content

Releases: evalphobia/logrus_sentry

v0.4.1

14 Jun 01:43
Compare
Choose a tag to compare
Add flag SendExceptionType to configuration. (#49)

v0.4.0

14 Jun 01:40
Compare
Choose a tag to compare
Stop double-buffering in async hook (#47)

The underlying Raven Sentry client already is asynchronous with an adjustable
buffer size. Unlike the buffer in logrus_sentry, Raven drops packets when the
buffer is filled (and calls an optional DropHandler when it does so).

The existing implementation of async hooks does not drop packets when its buffer
fills, which means that the so-called "async" hook becomes synchronous if the
buffer fills, and the Raven packet-dropping logic most likely never has a chance
to do its tricks.  In our service, we discovered that bugs that caused errors to
spew to Sentry via logrus_sentry quickly hit this buffer's limit and caused our
service to stall, despite the supposedly "async" nature of the hook.

This commit changes logrus_sentry's async mode to be truly asynchronous: it
delivers packets to Raven, which either passes them to its background worker or
drops them if its buffer is full.  It then starts a new goroutine per packet to
log any errors and coordinate with the WaitGroup for flush.

The previous version of the code set a 1 second Timeout for async mode, which
effectively just allowed the worker goroutine to send the next packet to Raven
after 1 second.  Because we no longer have a separate worker goroutine, this
is no longer necessary.  A comment also mentions how to set a timeout for the
underlying HTTP POST, which achieves a similar goal of allowing Flush to finish
in a bounded amount of time.

Note that Raven's buffer size (100) is smaller than logrus_sentry's old buffer
size (8192), so users may want to increase raven.MaxQueueBuffer before
contructing the hook to avoid dropping packets.

Also follow the normal Go style of putting mutexes before the fields they
protect in struct definitions.

v0.3.0

14 Jun 01:27
Compare
Choose a tag to compare
Update import path Sirupsen -> sirupsen (#48)

Logrus renamed the uppercase "Sirupsen" to "Sirupsen":
https://github.com/sirupsen/logrus/pull/384

Several libraries that integrate with Logrus are using the new lowercase import
path, for example the graylog hook:
https://github.com/gemnasium/logrus-graylog-hook/commit/daf02e0efe6f4dee3f7085184f5d527cf5cf0f6b

v0.2.14

14 Apr 03:48
Compare
Choose a tag to compare
Fix #42 panic occurs if zero stack frames (#43)

v0.2.13

14 Apr 02:05
Compare
Choose a tag to compare
add error field as culprit, even when no stack tracing (#41)

* add error field as culprit, even when no stack tracing

* add test for error as culprit

v0.2.12

24 Feb 16:53
Compare
Choose a tag to compare
Support fingerprinting (#39)

* Support fingerprinting

* Fix line number dependent test

* Add fingerprint to README

v0.2.11

24 Feb 16:03
Compare
Choose a tag to compare
Fix default stracktrace being reported if the root Cause doesn't impl…

v0.2.10

01 Jan 09:49
Compare
Choose a tag to compare
Allow *revel.Http structs in `http_request` field (#33)

* Update getHTTPRequest() to return a *raven.Http struct

* Accept *raven.Http structs in http_request field

v0.2.9

15 Dec 09:57
Compare
Choose a tag to compare
A small bugfix to create valid stacktraces (#28)

raven.NewStacktraceFrame() ignores frames for `runtime.goexit`, which lead
to null values in stack traces, which sentry doesn't like.  This fixes the
oversight.

v0.2.8

14 Dec 07:52
Compare
Choose a tag to compare
Add support for asynchronous logging (#27)

* Add Async-mode constructors

* Move sending of raven packet to its own func

* Set default timeout to 1s in async mode

* Add async plumbing

* Add async tests

* Add Flush() function