Solution
On config/environment.rb , set up the format of logging. To do so, place the code below just before the closing end on the environment.rb
class Logger def format_message(severity, timestamp, progname, msg) "[#{timestamp.strftime("%Y-%m-%d %H:%M:%S")}] [#{severity}] #{msg}\n" end end
This would output the log as something like this:
[2011-06-21 13:52:21] [INFO] YOUR MESSAGE HERE.
On application_controller.rb
Add at the top part a before_filter to make the variable applicable to all:
before_filter :login_check
and the function as
def login_check if(!File.exists?("#{RAILS_ROOT}/log/access")) Dir.mkdir("#{RAILS_ROOT}/log/access") end @log_file = "#{RAILS_ROOT}/log/#{Time.zone.now.strftime("%B-%Y")}.log" unless File.exists?(@log_file) @logger = Logger.new(@log_file, "monthly") @logger.datetime_format = "%Y-%m-%d %H:%M:%S" else file = open(@log_file, File::WRONLY | File::APPEND) @logger = Logger.new(file, "monthly") @logger.datetime_format = "%Y-%m-%d %H:%M:%S" end end
Now all you need to do is call:
@logger.info("YOUR MESSAGE HERE")
to log certain events. I usually placed this at the end or at parts on the controller that I think would be useful.
You can always customized furthermore the log files contents or directory placed. From the example above, log files are placed inside the log/access folder and has a filename with the following format - [MONTH]-[YEAR].log
This is to make sure that the log files are organized by month.
No comments :
Post a Comment