Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # lib/my_plugin/logger.rb
- module MyPlugin
- # A logging provider that mimics +Rails.logger+'s interface.
- #
- # The log level should be set in +config.yml+ in the root of the Rcopia
- # plugin. The log file will appear in the +RAILS_ROOT/log+ folder.
- class Logger
- include Singleton
- attr_accessor :log
- attr_accessor :logfile
- def initialize
- @logfile = File.open File.join(Rails.root, "log/myplugin.#{ Rails.env }.log"), 'a'
- @logfile.sync = true
- @log = ::Logger.new(@logfile)
- @log.level = ::Logger.const_get(MyPlugin::Settings.log_level.upcase)
- end
- # ERROR level log statement
- def self.error msg, fmt=nil
- log_message msg, :error, fmt
- end
- # WARN level log statement
- def self.warn msg, fmt=nil
- log_message msg, :warn, fmt
- end
- # INFO level log statement
- def self.info msg, fmt=nil
- log_message msg, :info, fmt
- end
- # DEBUG level log statement
- def self.debug msg, fmt=nil
- log_message msg, :debug, fmt
- end
- private
- # Display log message
- def self.log_message msg, lvl, fmt
- instance.log.send(lvl, "#{ lvl.to_s.upcase } #{msg}")
- if lvl == :debug
- instance.logfile.flush
- end
- end
- end
- end
Add Comment
Please, Sign In to add comment