juliet7438 发表于 2009-9-25 17:07:54

ruby+watir自定义类库介绍--日志操作类库

现将自己编写的一些类库与大家分享下,类库不是很完善,请大家指教下#LibLogger为日志处理函数
#- StartLogger函数:创建日志文件并初始化
#- CreateTxtFile函数:创建txt格式的日志文件,并初始化
#- CreateXmlFile函数:创建xml格式的日志文件,并初始化
#- log函数:打印日志到txt日志文件中
#- Result函数:将case执行的结果,打印日志到xml日志文件中
#- closeLog函数:关闭日志文件
module LibLogger
class DealLogger
    def initialize()
      require "rexml/document"
      @datetime_format= "%Y-%m-%d %H:%M:%S"
      @file_name_format = "%Y%m%d_%H%M%S"
      @log_path         ="#{File.dirname(__FILE__)}/../output/集成回归结果"
    end
   
      #功能说明:创建日志文件并初始化
      #
      #参数说明:
      #- fileNamePrefix:日志文件的前缀
      #- 默认txt日志文件格式如:TestLog 20090803_140845.txt
      #- 默认xml日志文件格式如:TestLog 20090803_140845.xml
      #
      #调用示例:
      #- $logger.StartLogger()
      #
      #返回值说明:无
    def StartLogger(fileNamePrefix = 'TestLog')
      
      if (!FileTest::exist?(@log_path))
      FileUtils.makedirs(@log_path)
      end
      
      log_file_path = CreateTxtFile(fileNamePrefix)
      #CreateXmlFile(fileNamePrefix)
      return log_file_path
    end
   
      #功能说明:创建txt格式的日志文件,并初始化
      #
      #参数说明:
      #- fileNamePrefix:日志文件的前缀,默认txt日志文件格式如:TestLog 20090803_140845.txt
      #
      #调用示例:
      #- $logger.CreateTxtFile("TestLog")
      #
      #返回值说明:无
    def CreateTxtFile(fileNamePrefix)
      date_string = Time.now.strftime("%Y%m%d")
      time_string = Time.now.strftime("%H%M%S")
      time = Time.now.strftime(@file_name_format)
      file_name = "#{@log_path}/#{date_string}/#{time_string}/#{fileNamePrefix} #{time}.txt"
      puts "执行日志文件创建成功,日志路径:#{$TxtClass.GetRealPath(file_name)}"
      @txt_log = File.new(file_name,'w+')
      
      @txt_log.puts "Logfile created on #{Time.now.strftime(@datetime_format)} /"
      @txt_log.puts"Watir starting"

      return file_name
    end
   
      #功能说明:创建xml格式的日志文件,并初始化
      #
      #参数说明:
      #- fileNamePrefix:日志文件的前缀,默认xml日志文件格式如:TestLog 20090803_140845.xml
      #
      #调用示例:
      #- $logger.CreateXmlFile("TestLog")
      #
      #返回值说明:无
    def CreateXmlFile(fileNamePrefix)
      time = Time.now.strftime(@file_name_format)
      @file_name = "#{@log_path}/#{fileNamePrefix} #{time}.xml"
      puts "执行结果日志文件创建成功,日志路径:#{@file_name}"
      
      @xml_log = File.new(@file_name,'w+')
      @xml_log.puts "<?xml version=\"1.0\" encoding=\"gb2312\" ?> "
      @xml_log.puts "<results>"
    end
   
      #功能说明:打印日志到txt日志文件中
      #
      #参数说明:
      #- message:日志内容,格式为字符串或二维数组,二维数组为打印数据库查询结果用
      #- flag:是否执行puts输出
      #
      #调用示例:
      #- $logger.log("TestLog")
      #- $logger.log(['字段1','字段2'][['值1','值2']])
      #
      #返回值说明:
      #- 无返回值
    def log(message,flag = nil)

      log_time = Time.now.strftime(@datetime_format)
      
      if (message != nil)
      case message
          when String
            case flag
            when nil
                log_info = "#{log_time} [#{message}]"
                puts "log #{message}\n"
            when 'S'
                log_info = "#{log_time} [执行操作(开始):#{message}]"
                puts "log #{message}\n"
            when 'E'
                log_info = "#{log_time} [执行操作(结束):#{message}]"
                puts "log #{message}\n"
            else
                log_info = "#{log_time} [#{message}]"
            end

            @txt_log.puts log_info
          when Array
            if (flag == nil)
            if (message.length == 2)
                @txt_log.puts "#{log_time} [查询结果如下:]"
                message.each_index do |x|
                  @txt_log.puts "#{log_time} [--------------------第#{x+1}条数据-----------------------]"
                  message.each_index do |i|
                  log_info = "#{log_time} [#{message}字段值:{#{message}}]"
                  @txt_log.puts log_info
                  end
                end
            end
            else
            if (message.length == 3)
                @txt_log.puts "#{log_time} [对比结果如下:]"
                message.each_index do |x|
                  log_info = "#{log_time} [#{message}字段值:预期值:{#{message}} , 实际值:{#{message}}]"
                  #puts "[#{message}字段值:预期值:{#{message}} , 实际值:{#{message}}]"
                  @txt_log.puts log_info
                end
            end
            end
      end
      end #if end
    end #def log end
   
      #功能说明:将case执行的结果,打印日志到xml日志文件中
      #
      #参数说明:
      #- case_name:case的名称
      #- result:case执行后的结果
      #
      #调用示例:
      #- $logger.Result("用户登录",'成功')
      #
      #返回值说明:
      #- 无返回值
    def Result(case_name,result)
      result_info = "<result testcase= '#{case_name}' result = '#{result}'></result>"
      @xml_log.puts result_info
    end
   
      #功能说明:关闭日志文件
      #
      #参数说明:
      #- 无参数
      #
      #调用示例:
      #- $logger.closeLog()
      #
      #返回值说明:
      #- 无返回值
    def closeLog()
      #@xml_log.puts "</results>"
      #@xml_log.close
      @txt_log.close
    end
end #class DealLoggerend
end调用例子:require '../lib/LibLogger.rb'
require '../lib/libFile.rb'


log_file_path = "./output"
$logger = LibLogger::DealLogger.new
$TxtClass = LibFile::DealTxtFile.new

#初始化日志文件
$logger.StartLogger()

#写入日志文件并打印到输出窗口
$logger.log('测试日志,打印并输出到文件')

#只写入日志文件
$logger.log('测试日志,只输出到文件,不打印','N')

#结束日志文件
$logger.closeLog() 打印出来的日志格式:
Logfile created on 2009-09-17 17:40:08 /
Watir starting
2009-09-17 17:40:08 [测试报告文件创建成功,路径:F:\workspace\alipay\output\TestReport 20090917_174008.xlsx]
2009-09-17 17:40:11 [调用函数:LibExcel.rb文件中方法 saveAs(F:\workspace\alipay\output\TestReport 20090917_174008.xlsx)]
2009-09-17 17:40:12 [调用函数结束:LibExcel.rb文件中方法 saveAs(F:\workspace\alipay\output\TestReport 20090917_174008.xlsx)]
2009-09-17 17:40:13 [文件创建成功,路径为:F:\workspace\alipay\output\TestReport 20090917_174008.xlsx]

小米啊 发表于 2009-9-28 16:43:37

多谢!分享呀!

ahtest 发表于 2010-3-12 15:01:54

谢谢....

hbm 发表于 2011-5-8 10:37:15

你好,如果我是调用了一个函数 ,比如说发送邮件,我需要对是否发生邮件成功,打印日志到指定的文件夹,这该怎么走呢

fiena 发表于 2011-6-9 13:30:44

楼主,真好啊,谢谢:)

jingwdongw 发表于 2011-8-1 22:47:16

:victory:

willcaty 发表于 2012-2-23 11:23:01

强烈需求这方面知识啊。

xiaomili00001 发表于 2012-5-10 16:17:08

正在学习中~~~

weiweixiaocao 发表于 2012-5-17 13:30:22

既然看了,顶一个吧,好帖子

sunzhenguo1010 发表于 2012-5-30 18:22:24

LibFile.rb怎么没有呢?在哪里用呢?

LUCIEN06 发表于 2015-3-24 19:43:28

多谢分享,学习学习!
页: [1]
查看完整版本: ruby+watir自定义类库介绍--日志操作类库