 
 This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Adding Logging To Your Application | ||
|---|---|---|
| Code | Expected | Actual | 
| require 'logger'
$LOG = Logger.new($stderr)
def divide(numerator, denominator)
  $LOG.debug("Numerator: #{numerator}, denominator #{denominator}")
  begin
    result = numerator / denominator
  rescue Exception => e
    $LOG.error "Error in division!: #{e}"
    result = nil
  end
  return result
end
divide(10, 2) | D, [2006-03-31T19:35:01.043938 #18088] DEBUG -- : Numerator: 10, denominator 2 | |
| divide(10, 0) | D, [2006-03-31T19:35:01.045230 #18088] DEBUG -- : Numerator: 10, denominator 0 E, [2006-03-31T19:35:01.045495 #18088] ERROR -- : Error in division!: divided by 0 | |
| divide(10, 2) | 5 | 5 | 
| divide(10, 0) | E, [2006-03-31T19:35:01.047861 #18088] ERROR -- : Error in division!: divided by 0 | |
| Logger.new('this_month.log', 'monthly') | Keep data for today and the past 20 days. | |
| Logger.new('application.log', 20, 'daily') | Start the log over whenever the log exceeds 100 megabytes in size. | |
| Logger.new('application.log', 20, 'daily')
class Logger
  class Formatter
    Format = "%s [%s] %s %s\n"
    def call(severity, time, progname, msg)
      Format % [severity, format_datetime(time), progname, msg]
    end
  end
end
$LOG.error('This is much shorter.') | ERROR [2006-03-31T19:35:01.058646 ] This is much shorter. | |