众所周知,Rails的日志文件是文本类型的,如果要对日志文件进行分析时,比如延迟分析,不能像看图表一样直观。
我们可以先将日志文件转换为excel格式的xls、csv文件,然后转换成图表格式。
#encoding:utf-8
require "csv.rb"
log_file_path = "production.log"
# csv_file_path = log_file_path.match('(\w+)\.log')[1] + ".csv"
csv_file_path = "log.csv"
puts "limit response time(default 0ms):"
(limit_response_time = gets.to_i) >= 0 ? limit_response_time : 0
def response_regex
'Completed \d+ \w+ in (\d+)ms'
end
def get_status(paragraph)
request_regex = 'Started GET \"(\/.*)\" for ([\d]+\.[\d]+\.[\d]+\.[\d]+) at [\d]*-([\d]*-[\d]* [\d]*:[\d]*:[\d]*)'
controller_regex = 'Processing by ([\w]+#[\w]+)'
if paragraph.match(request_regex) != nil
request_url = paragraph.match(request_regex)[1]
request_host = paragraph.match(request_regex)[2]
request_at = paragraph.match(request_regex)[3]
end
if paragraph.match(controller_regex) != nil
controller_name = paragraph.match(controller_regex)[1]
end
if paragraph.match(response_regex) != nil
total_time = paragraph.match(response_regex)[1]
end
request_status = [request_url, request_host, request_at,
controller_name, total_time]
# request_status.each do |each_status|
# puts each_status
# end
request_status
end
CSV.open(csv_file_path, "wb:gbk") do |csv|
csv << ["请求发送的地址", "请求发送的主机", "请求发送的时间", "请求回复的模块名称","响应时间(ms)"]
File.open(log_file_path, "r:utf-8") do |file|
paragraph = ""
begin_flag = false
# 对每一行进行判断
file.each do |line|
# 以"Started GET "开头为一个paragraph
if line.start_with?("Started GET ")
if !begin_flag
begin_flag = true
paragraph.concat(line)
else
# 另一个paragraph的开头
# puts paragraph
# gets
if (paragraph.match(response_regex) != nil)
if paragraph.match(response_regex)[1].to_i >= limit_response_time
csv << get_status(paragraph)
end
end
begin_flag = true
paragraph = line
end
else
if begin_flag
paragraph.concat(line)
else
# p "无效日志行"
end
end
end
end
end
生成的csv格式如下图所示:
分享到:
相关推荐
rails-dev-box, 面向 Ruby on Rails 核心开发的虚拟机 用于 Ruby on Rails 核心开发的虚拟机简介注意:这个虚拟机不是为 Rails 应用程序开发而设计的,只是为。 这个项目自动设置开发环境,以便在 Ruby on Rails ...
导出为CSV on Rails的 这个简单的插件使您能够调用 to_csv 到一系列活动记录。 除了 :include 之外,构建器选项与 to_json / to_xml 相同。入门 在您的 Gemfile 中: gem 'to_csv-rails' # Last officially released...
rails-angular-postgres-and-bootstrap-second-edition 英文原版
rails-exporter-源码.rar
rails-documentation-2-0-2
rails-beginner-s-guide是Rails 指导手册,帮组学习了解rails开发
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
rails-react-components-源码.rar
rails-builds-test-源码.rar
rails-yelp-mvp-源码.rar
rails-development-environment-master.rar
Ruby on Rails 初体验--北大青鸟教师专题讲座PPT 想学Ruby的赶快下载看看。 Ruby--目前最快速开发工具
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
awesome-rails-gem-zh_CN, Rails 常用 Gem 列表 - Awesome Rails Gem 中文版
rails-documentation-1-2-1.zip
用于Ruby on Rails核心开发的虚拟机 介绍 请注意,该虚拟机并非为...host $ cd rails-dev-box host $ vagrant up 而已。 安装完成后,您可以使用以下命令访问虚拟机: host $ vagrant ssh Welcome to Ubuntu 20.10
rails-documentation-1-2-0-rc1.chm
rails-ftw-v0.18-2.1.5-4.1.8.exe用于在windows环境下搭建readmine环境
rails-tutorial-源码.rar
rails-playlists-源码.rar