44
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Exception Notificationでエラー時にMailやHipChatに通知を送る

Last updated at Posted at 2014-04-09

https://github.com/smartinez87/exception_notification

これ、便利ですね。

設定

Gemfile
+ gem 'exception_notification'
+ gem 'hipchat' # HipChatを使う場合だけ

Railsの場合は以下のようにすると設定ファイルが作成されます。

$ rails g exception_notification:install

自分は以下のようにしました。

ignored_exceptionsを空でデフォルトで無視されている例外でも補足させてます。

詳細はこちらを参照してください。

またproduction環境のみで実行できるようにしました。

config/initializers/exception_notification.rb
require 'exception_notification/rails'
ExceptionNotification.configure do |config|
  # Ignore additional exception types.
  # ActiveRecord::RecordNotFound, AbstractController::ActionNotFound and ActionController::RoutingError are already added.
  # config.ignored_exceptions += %w{ActionView::TemplateError CustomError}
  config.ignored_exceptions = %w{} # 効いてるかな?

  # Adds a condition to decide when an exception must be ignored or not.
  # The ignore_if method can be invoked multiple times to add extra conditions.
  config.ignore_if do |exception, options|
    not Rails.env.production?
  end

  # Notifiers =================================================================

  # Email notifier sends notifications by email.
  config.add_notifier :email, {
    email_prefix:         "[ERROR_MODE] ",
    sender_address:       %{"Error Notification" <dev@example.com>},
    exception_recipients: %w{dev-ml@example.com}
  }

  # HipChat notifier sends notifications to your HipChat room. Requires 'hipchat' gem.
  config.add_notifier :hipchat, {
    :api_token => 'YOUR_API_KEY',
    :room_name => 'YOUR_ROOM_ID_OR_NAME'
  }

end

これだけ。

$ rails s -e=production

とかやって、わざとExceptionを起こすとメールやHipChatの部屋にアラートが届くと思います。

また例外を補足することをトリガーとしているだけかとおもいきや、

begin
  some code...
rescue => e
  ExceptionNotifier.notify_exception(e)
end

みたいな感じでメソッドとして呼べるみたいです。バックグラウンドで処理されるように設定する必要があるみたいですが、以下のようにすると先ほどの設定ファイルに設定が追加されるみたいです。

rails g exception_notification:install --resque
or
rails g exception_notification:install --sidekiq

超簡単便利!

44
46
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?