Exception File Notifier
Exception File Notifier is a custom notifier for Exception Notification, that records notifications onto a log file when errors occur in a Rack/Rails application.
All the error logs are converted into JSON format. This would be useful typically when you wish to monitor an app with monitoring tools - e.g. Kibana + ElasticSearch + Fluentd, or anything alike.
Installation
Add this line to your application's Gemfile:
gem 'exception_file_notifier'
And then execute:
$ bundle
Or install it yourself as:
$ gem install exception_file_notifier
Usage
Set proper configs in config/initializers/exception_notification.rb
To get started, use the simplest settings:
ExceptionNotification.configure do |config|
config.add_notifier :file, {
filename: "#{Rails.root}/log/exceptions.log"
}
That works in all the environment (including test).
You could also customize settings like so:
ExceptionNotification.configure do |config|
# disable all the notifiers in certain environment
config.ignore_if do |exception, options|
Rails.env.test?
end
config.add_notifier :file, {
filename: "#{Rails.root}/log/exceptions_#{Rails.env}.log", # generate different log files depending on environments
shift_age: 'daily' # use shift_age/shift_size options to rotate log files
}
You could also pass as many original values as you like, which will be evaluated JSON-ified at the time when an exception occurs. For detailed setting you may wish to consult with the Exception Notification original readme.
available options:
-
filename: specify the log file (preferablly with its absolute path)
-
shift_age: option for log file rotation: directly passed to Ruby Logger
-
shift_size: option for log file rotation: directly passed to Ruby Logger
(for the latter options see also: https://docs.ruby-lang.org/ja/latest/method/Logger/s/new.html)
Note
Due to a bug with ruby Logger discovered in ruby 2.2 - 2.3, it might happen that you cannot rotate logs by using shift_age. (for those who come up with any workaround for this, please let us know / PR are welcomed)
Meanwhile you could cope with either 1) upgrading your ruby version upto 2.4, or 2) rotate logs by size, not date
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/fursich/exception_file_notifier.
Special Thanks To
All the folks who have given supports, especially @motchang and @katsurak for great advises and reviews.
License
The gem is available as open source under the terms of the MIT License.