Checks that the `error` field is really and `error` type.

This commit is contained in:
Antoine Grondin 2014-07-13 14:49:59 -04:00
parent 97978e5e54
commit 52039d614e
1 changed files with 12 additions and 2 deletions

View File

@ -24,11 +24,21 @@ func (hook *AirbrakeHook) Fire(entry *logrus.Entry) error {
return nil
}
err := airbrake.Notify(entry.Data["error"].(error))
if err != nil {
err, ok := entry.Data["error"].(error)
if !ok {
entry.Logger.WithFields(logrus.Fields{
"source": "airbrake",
"endpoint": airbrake.Endpoint,
}).Warn("Exceptions sent to Airbrake must have an `error` key of type `error`")
return nil
}
airErr := airbrake.Notify(err)
if airErr != nil {
entry.Logger.WithFields(logrus.Fields{
"source": "airbrake",
"endpoint": airbrake.Endpoint,
"error": airErr,
}).Warn("Failed to send error to Airbrake")
}