Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Debug with Logger

David
October 14, 2014

Debug with Logger

An introductory talk on using the Logger from the Ruby standard lib. vs. `puts` style debugging. Presented at denver.rb.

David

October 14, 2014
Tweet

More Decks by David

Other Decks in Technology

Transcript

  1. def sort_and_reverse(array) array.sort array.reverse array end nums = [4, 7,

    23, 1, 8, 3, 8, 42, 6] sar_nums = sort_and_reverse nums puts "The original order is: #{nums}" puts "The sorted and reversed order is: #{sar_nums}"
  2. def sort_and_reverse(array) puts "Array: #{array}" array.sort puts "Array after sort,

    before reverse: #{array}" array.reverse puts "Array after sort and reverse: #{array}" end nums = [4, 7, 23, 1, 8, 3, 8, 42, 6] sar_nums = sort_and_reverse nums puts "The original order is: #{nums}" puts "The sorted and reversed order is: #{sar_nums}"
  3. def sort_and_reverse(array) sorted = array.sort reverse_sorted = sorted.reverse reverse_sorted end

    nums = [4, 7, 23, 1, 8, 3, 8, 42, 6] sar_nums = sort_and_reverse nums puts "The original order is: #{nums}" puts "The sorted and reversed order is: #{sar_nums}"
  4. require 'logger' class MyLog def self.log if @logger.nil? @logger =

    Logger.new STDOUT @logger.level = Logger::DEBUG @logger.datetime_format = '%Y-%m-%d %H:%M:%S ' end @logger end end
  5. ... def sort_and_reverse(array) MyLog.log.debug "Array: #{array}" array.sort MyLog.log.debug "After sort

    method: #{array}" array.reverse MyLog.log.debug "After reverse method: #{array}" array end nums = [4, 7, 23, 1, 8, 3, 8, 42, 6] sar_nums = sort_and_reverse nums puts "The original order is: #{nums}" puts "The sorted and reversed order is: #{sar_nums}"
  6. ... def sort_and_reverse(array) MyLog.log.debug "Array: #{array}" sorted = array.sort MyLog.log.debug

    "After sort method: #{sorted}" reverse_sorted = sorted.reverse MyLog.log.debug "After reverse method: #{reverse_sorted}" reverse_sorted end nums = [4, 7, 23, 1, 8, 3, 8, 42, 6] sar_nums = sort_and_reverse nums puts "The original order is: #{nums}" puts "The sorted and reversed order is: #{sar_nums}"
  7. require 'logger' class MyLog def self.log if @logger.nil? @logger =

    Logger.new STDOUT @logger.level = Logger::INFO @logger.datetime_format = '%Y-%m-%d %H:%M:%S ' end @logger end end
  8. require 'logger' class MyLog def self.log if @logger.nil? @logger =

    Logger.new STDOUT @logger.level = Logger::INFO @logger.datetime_format = '%Y-%m-%d %H:%M:%S ' end @logger end end
  9. ... def sort_and_reverse(array) MyLog.log.debug "Array: #{array}" sorted = array.sort MyLog.log.debug

    "After sort method: #{sorted}" reverse_sorted = sorted.reverse MyLog.log.debug "After reverse method: #{reverse_sorted}" reverse_sorted end nums = [4, 7, 23, 1, 8, 3, 8, 42, 6] sar_nums = sort_and_reverse nums puts "The original order is: #{nums}" puts "The sorted and reversed order is: #{sar_nums}"
  10. The Logger class provides a simple but sophisticated logging utility

    that you can use to output messages. The messages have associated levels, such as INFO or ERROR that indicate their importance. You can then give the Logger a level, and only messages at that level or higher will be printed. http://www.ruby-doc.org/stdlib-2.1.3/libdoc/logger/rdoc/Logger.html
  11. require 'logger' class MyLog def self.log if @logger.nil? @logger =

    Logger.new STDOUT @logger.level = Logger::INFO @logger.datetime_format = '%Y-%m-%d %H:%M:%S ' end @logger end end
  12. require 'logger' class MyLog def self.log if @logger.nil? @logger =

    Logger.new ‘log.txt’ @logger.level = Logger::INFO @logger.datetime_format = '%Y-%m-%d %H:%M:%S ' end @logger end end
  13. require 'logger' class MyLog def self.log if @logger.nil? @logger =

    Logger.new STDOUT @logger.level = Logger::INFO @logger.datetime_format = '%Y-%m-%d %H:%M:%S ' end @logger end end
  14. require 'logger' class MyLog def self.log if @logger.nil? @logger =

    Logger.new STDOUT @logger.level = Logger::INFO @logger.datetime_format = '%Y-%m-%d %H:%M:%S ' end @logger end end
  15. ... def sort_and_reverse(array) MyLog.log.debug "Array: #{array}" sorted = array.sort MyLog.log.debug

    "After sort method: #{sorted}" reverse_sorted = sorted.reverse MyLog.log.debug "After reverse method: #{reverse_sorted}" reverse_sorted end nums = [4, 7, 23, 1, 8, 3, 8, 42, 6] sar_nums = sort_and_reverse nums puts "The original order is: #{nums}" puts "The sorted and reversed order is: #{sar_nums}"