我們想獲得很好的log日志,這需要我們動手去寫,這里有個生成文件log的實例:
首先我們有個主log生成器, logfactory.rb
require 'logger'
	# default logger
	class LoggerFactory
	 
	  # start logger
	  def LoggerFactory.start_default_logger(fileNamePrefix)
	   
	    # time = Time.now.strftime("%m %d %Y %H %M %s") 
	 time = Time.now.strftime("%Y%m%d%H%M%S")
	    # logger = CoreLogger.new(File.join(File.dirname(__FILE__), "#{fileNamePrefix}_#{time}.txt") ,logs to keep, maxlogsize)
	 logger = CoreLogger.new(File.join(File.expand_path(".") + "\logs\", "#{fileNamePrefix}_#{time}.txt") ,2, 1000000)
	    return logger
	  end 
	end
	class  CoreLogger < Logger
	 
	  # extend the logger, overide it
	  def initialize(fileName, logsToKeep, maxLogSize)
	    super(fileName , logsToKeep, maxLogSize)
	    self.level = Logger::INFO   # set to INFO level
	    self.datetime_format = "%d-%b-%Y %H:%M:%S"
	    self.info("Logger starting...")         
	  end
	 
	  #overloaded "log" from logger.rb to something more intuitive.
	  def log(message)
	    puts "log #{message}
"         #optional. comment out if you don't want to see logging in the console
	    info(message)                   #calls info in logger.rb -- would be good to use different logging levels
	  end
	end 
然后在我們的case中引入:
require 'logfactory'
可以進行使用了:
	def login_action
	# Navigate to target URL
	$browser.goto(TEST_SITE)
	$logger.log("Passed: Step " + $stepcounter.to_s() + ": Navigate to URL:" + TEST_SITE)
	$stepcounter=$stepcounter + 1
	# wait till the user name element show up
	Watir::Wait.until {$browser.text.include? "USER NAME:"}
	  
	# enter user name
	    $browser.text_field(:name, "UserName").set(LOGINID)
	    $logger.log("Passed: Step " + $stepcounter.to_s() + ": Enter '" + LOGINID + "' in the User Name text field")
	    $stepcounter=$stepcounter + 1
	    # enter user password
	    $browser.text_field(:name, "UserPassword").set(PASSWORD)
	    $logger.log("Passed: Step " + $stepcounter.to_s() + ": Enter '" + PASSWORD + "' in the Password text field")
	$stepcounter=$stepcounter + 1
	    # click Login button
	    $browser.button(:value, "Login").click
	    $logger.log("Passed: Step " + $stepcounter.to_s() + ": Click the 'Login' button")
	$stepcounter=$stepcounter + 1
	# if the duplicate login session pop up show up
	if $browser.button(:value, 'OK').exist? # Yes, pop up is here
	$browser.button(:value, 'OK').click # Click OK button
	$logger.log("Passed: Step " + $stepcounter.to_s() + ": click the 'OK' button")
	$stepcounter=$stepcounter + 1
	end
	# check login sucessfully or not
	# Watir::Wait.until {$browser.title.include?('Home')}
	    $browser.div(:id, "content").wait_until_present
	if $browser.div(:id, "content").text.include?"Home"
	$logger.log("Passed: Step " + $stepcounter.to_s() + ": Login successfully")
	$stepcounter=$stepcounter + 1
	else
	$logger.log("Failed: Step " + $stepcounter.to_s() + ": Login failed")
	$stepcounter=$stepcounter + 1
	end
	 end
	  
	  def logout_action
	 
	 # click the logout link
	   $browser.link(:text, "Log Out").click
	   $logger.log("Passed: Step " + $stepcounter.to_s() + ": Click the 'Log Out' link")
	      # close the browser
	      $browser.close
	  end
	生成的結果如:
	# Logfile created on 2012-11-21 16:17:52 +0800 by logger.rb/31641
	I, [21-Nov-2012 16:17:52#5096]  INFO -- : Logger starting...
	I, [21-Nov-2012 16:17:52#5096]  INFO -- :
	I, [21-Nov-2012 16:17:54#5096]  INFO -- : ------------------------------------------
	I, [21-Nov-2012 16:17:54#5096]  INFO -- : ## Beginning of test case 01            ##
	I, [21-Nov-2012 16:17:54#5096]  INFO -- : ------------------------------------------
	I, [21-Nov-2012 16:17:55#5096]  INFO -- : Passed: Step 1000: Navigate to URL:http://10.32.152.113:8080/
	I, [21-Nov-2012 16:17:57#5096]  INFO -- : Passed: Step 1001: Enter 'test@gmail.com' in the User Name text field
	I, [21-Nov-2012 16:17:58#5096]  INFO -- : Passed: Step 1002: Enter 'password123' in the Password text field
	I, [21-Nov-2012 16:17:58#5096]  INFO -- : Passed: Step 1003: Click the 'Login' button
	I, [21-Nov-2012 16:17:59#5096]  INFO -- : Passed: Step 1004: click the 'OK' button
	I, [21-Nov-2012 16:18:00#5096]  INFO -- : Passed: Step 1005: Login successfully
	I, [21-Nov-2012 16:18:00#5096]  INFO -- : ------------------------------------------
	I, [21-Nov-2012 16:18:00#5096]  INFO -- : ## End of test case 01                  ##
	I, [21-Nov-2012 16:18:00#5096]  INFO -- : ------------------------------------------