Custom Logging in Ruby on Rails
I’m one of those developers that likes to abuse standard output in development. In my rails development, I would use ‘puts variable’ everywhere. But sometimes, my debug print statements get clobbered with rail’s default logging of requests and SQL queries.
I’m aware there’s a debugger… but I find using puts quicker. This is especially the case when I just want to see a pattern within an execution or loop rather than tracing variables at each step.
Anyway, here’s how to build a console window that’s devoted solely for debug print statements. You may also find this useful for devoting a log file just to search, auditing, etc. Here are the very basics:
Create Your Custom Logger
#custom_logger.rb class CustomLogger < Logger def format_message(severity, timestamp, progname, msg) "#{msg}\n" end end logfile = File.open(RAILS_ROOT + '/log/custom.log', 'a') #create log file logfile.sync = true #automatically flushes data to file CUSTOM_LOGGER = CustomLogger.new(logfile) #constant accessible anywhere
Load CustomLogger From Environment
#in development.rb require "custom_logger"
Use CustomLogger
#in any controller, view or model CUSTOM_LOGGER.info("info from custom logger")
Finally, create your debug console using
tail -f log/custom.log
Resources
http://maintainable.com/articles/rails_logging_tips (very thorough rails logging article)
http://www.themomorohoax.com/2009/02/09/use-debugger (rails debugger)
http://log4r.sourceforge.net/manual.html (log4r)