bin/request-log-analyzer in wvanbergen-request-log-analyzer-0.3.4 vs bin/request-log-analyzer in wvanbergen-request-log-analyzer-1.0.0
- old
+ new
@@ -1,48 +1,124 @@
#!/usr/bin/ruby
require File.dirname(__FILE__) + '/../lib/request_log_analyzer'
-require File.dirname(__FILE__) + '/../lib/command_line/arguments'
+require File.dirname(__FILE__) + '/../lib/cli/command_line_arguments'
-puts "Request log analyzer, by Willem van Bergen and Bart ten Brinke\n\n"
+def terminal_width(default = 81)
+ IO.popen('stty -a') do |pipe|
+ column_line = pipe.detect { |line| /(\d+) columns/ =~ line }
+ width = column_line ? $1.to_i : default
+ end
+rescue
+ default
+end
# Parse the arguments given via commandline
begin
arguments = CommandLine::Arguments.parse do |command_line|
- command_line.switch(:guess_database_time, :g)
- command_line.switch(:fast, :f)
- command_line.switch(:colorize, :z)
- command_line.switch(:merb, :m)
- command_line.switch(:install, :i)
- command_line.flag(:output, :alias => :o)
- command_line.flag(:amount, :alias => :c)
- command_line.required_files = 1
+
+ command_line.command(:install) do |install|
+ install.parameters = 1
+ end
+
+ command_line.command(:strip) do |strip|
+ strip.minimum_parameters = 1
+ strip.option(:format, :alias => :f, :default => 'rails')
+ strip.option(:output, :alias => :o)
+ strip.switch(:discard_teaser_lines, :t)
+ strip.switch(:keep_junk_lines, :j)
+ end
+
+ command_line.command(:anonymize) do |anonymize|
+ anonymize.minimum_parameters = 1
+ anonymize.option(:format, :alias => :f, :default => 'rails')
+ anonymize.option(:output, :alias => :o)
+ anonymize.switch(:discard_teaser_lines, :t)
+ anonymize.switch(:keep_junk_lines, :j)
+ end
+
+ command_line.option(:format, :alias => :f, :default => 'rails')
+ command_line.option(:file, :alias => :e)
+ command_line.switch(:single_lines, :s)
+ command_line.switch(:assume_correct_order)
+
+ command_line.option(:aggregator, :alias => :a, :multiple => true)
+ command_line.option(:database, :alias => :d)
+
+ # filtering options
+ command_line.option(:select, :multiple => true, :parameters => 2)
+ command_line.option(:reject, :multiple => true, :parameters => 2)
+ command_line.option(:after)
+ command_line.option(:before)
+
+ command_line.switch(:boring, :b)
+ command_line.option(:report_width, :default => terminal_width - 1)
+
+ command_line.switch(:debug)
+
+ command_line.minimum_parameters = 1
end
rescue CommandLine::Error => e
- puts "ARGUMENT ERROR: " + e.message
+ puts "ARGUMENT ERROR: " + e.message if e.message
puts
- load File.dirname(__FILE__) + "/../output/usage.rb"
+ puts "Usage: request-log-analyzer [LOGFILES*] <OPTIONS>"
+ puts
+ puts "Input options:"
+ puts " --format <format>, -f: Uses the specified log file format. Defaults to rails."
+ puts " --after <date> Only consider requests from <date> or later."
+ puts " --before <date> Only consider requests before <date>."
+ puts " --select <field> <value> Only consider requests where <field> matches <value>."
+ puts " --reject <field> <value> Only consider requests where <field> does not match <value>."
+ puts
+ puts "Output options:"
+ puts " --boring, -b Output reports without ASCII colors."
+ puts " --database <filename>, -d: Creates an SQLite3 database of all the parsed request information."
+ puts " --debug Print debug information while parsing."
+ puts " --file <filename> Output to file."
+ puts
+ puts "Examples:"
+ puts " request-log-analyzer development.log"
+ puts " request-log-analyzer -b mongrel.0.log mongrel.1.log mongrel.2.log "
+ puts " request-log-analyzer --format merb -d requests.db production.log"
+ puts
+ puts "To install rake tasks in your Rails application, "
+ puts "run the following command in your application's root directory:"
+ puts
+ puts " request-log-analyzer install rails"
exit(0)
end
-if arguments[:install]
- if arguments.files.first == 'rails'
+def install_rake_tasks(install_type)
+ if install_type == 'rails'
require 'ftools'
if File.directory?('./lib/tasks/')
File.copy(File.dirname(__FILE__) + '/../tasks/request_log_analyzer.rake', './lib/tasks/request_log_analyze.rake')
puts "Installed rake tasks."
puts "To use, run: rake log:analyze"
else
puts "Cannot find /lib/tasks folder. Are you in your Rails directory?"
puts "Installation aborted."
end
+ else
+ raise "Cannot perform this install type! (#{install_type})"
end
- exit(0)
end
-$colorize = true if arguments[:colorize]
-# Run the request_log_analyzer!
-request_log_analyzer = RequestLogAnalyzer.new(arguments)
-request_log_analyzer.analyze_this(arguments.files)
+case arguments.command
+when :install
+ install_rake_tasks(arguments.parameters[0])
+when :strip
+ require File.dirname(__FILE__) + '/../lib/request_log_analyzer/log_processor'
+ RequestLogAnalyzer::LogProcessor.build(:strip, arguments).run!
+when :anonymize
+ require File.dirname(__FILE__) + '/../lib/request_log_analyzer/log_processor'
+ RequestLogAnalyzer::LogProcessor.build(:anonymize, arguments).run!
+else
+ puts "Request log analyzer, by Willem van Bergen and Bart ten Brinke - Version 0.4.0\n\n"
+
+ # Run the request_log_analyzer!
+ RequestLogAnalyzer::Controller.build(arguments, terminal_width).run!
-
+ puts
+ puts "Thanks for using request-log-analyzer"
+end