Makes it easier to create multiple log files in Rails.
Add this line to your Rails application's Gemfile:
gem 'multi_logger'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install multi_logger
To setup a logger, create an initializer script such as [Rails.root]/config/initializers/logger.rb
with:
MultiLogger.add_logger('mail')
This will create a log file located at log/mail.log
.
Then In Rails, you can log by calling the following:
Rails.logger.mail.debug('42')
The Rails.
reference can be omitted at the usual places in Rails (e.g. controllers and views).
Note that log_name must not collide with existing method names in Rails logger, so names such as 'debug' or 'info' can not be used. You should try calling add_logger
in Rails console to test if it is ok or raises an error.
You can assign formatter to loggers directly, or pass the formatter during setup:
formatter = Proc.new{|severity, time, progname, msg|
formatted_severity = sprintf("%-5s",severity.to_s)
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S")
"[#{formatted_severity} #{formatted_time} #{$$}] #{msg.to_s.strip}\n"
}
MultiLogger.add_logger('mail', formatter:formatter)
MultiLogger.add_logger('user', formatter:formatter)
To set a different path to the log file, use :path
option.
For example, for setting a different file to each environment use:
MultiLogger.add_logger('mail', formatter:formatter, path:"mail_#{Rails.env}")
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
MIT License (See LICENSE.txt)