博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
日志解析(一) 大文件遍历
阅读量:5249 次
发布时间:2019-06-14

本文共 1588 字,大约阅读时间需要 5 分钟。

这几天接了一个项目,log日志大数据处理,需要从日志里提取URL,进行http请求,检查该URL是否含流量统计代码。

这里做了文件遍历后,提取url写入到新的文件里,将三天的同名log日志合并为1个文件进行写入操作。

#遍历文件

def traverse_dir(file_path)
  if File.directory? file_path
    Dir.foreach(file_path) do |file|
      if file !="." and file !=".."
        traverse_dir(file_path+"/"+file)
      end
    end
  else
    puts File.basename(file_path)
    if File.basename(file_path).include?"-"
      #对文件名做处理,替换操作,将home_so_com-jiancai.log替换成url,home.so.com
      url1=File.basename(file_path).split("-")[0].gsub(/([_])/,'.')
    else
      url1=File.basename(file_path).split(".log")[0].gsub(/([_])/,'.')
    end
    #对文件名做处理,替换操作,将home_so_com-jiancai.log变成成home_so_com-jiancai
    file_name=File.basename(file_path).split(".")[0]
    #puts file_name
    pFile = File.open(file_name+".txt","a")
    urls=IO.readlines(file_path)
    arr=Array.new
    urls.each do|oneurl|
      if oneurl.strip !=" "
        url6 = oneurl.split(" ")
        if url6[6]!="/" or url6[6]!="//"
          begin
            #arr<<url6[6].match(/(?:.)+(?:[^\/])/)[0]
            arr<<url6[6]
          rescue
            puts "error"
          end
        end
      end
    end
    arr.uniq!
    arr.each do|url6|
      if url6.strip !=""
        #对URL进行关键词过滤
        unless url6.include?("Interface") or url6.include?("Ajax") or url6.include?("ajax") or url6.include?("ashx") or  url6.include?("InterFace") or url6.include?("interface") or url6.include?("news.aspx") or url6.include?("portal.aspx") or url6.include?("homepage0.aspx") or url6.include?("homepage1.aspx") or url6.include?("homepage2.aspx") or url6.include?("homepage3.aspx") or url6.include?("homepage4.aspx") or url6.include?("homepage5.aspx")
          pFile.puts url1+url6
        end
      end
    end
    pFile.close
  end
end
traverse_dir('E:\home\test')

转载于:https://www.cnblogs.com/hudiefeifei/p/4316432.html

你可能感兴趣的文章
svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法...
查看>>
熟用TableView
查看>>
Java大数——a^b + b^a
查看>>
poj 3164 最小树形图(朱刘算法)
查看>>
服务器内存泄露 , 重启后恢复问题解决方案
查看>>
android一些细节问题
查看>>
KDESVN中commit时出现containing working copy admin area is missing错误提示
查看>>
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
Redmine
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>