#!/usr/bin/ruby $:.unshift(File.dirname(__FILE__) + '/../lib') require 'request_log_analyzer' require 'cli/command_line_arguments' require 'lib/cli/progressbar' require 'lib/cli/tools' # Parse the arguments given via commandline begin arguments = CommandLine::Arguments.parse do |command_line| command_line.command(:install) do |install| install.parameters = 1 end command_line.command(:console) do |cons| cons.option(:database, :alias => :d, :required => true) cons.option(:format, :alias => :f, :default => 'rails') cons.option(:apache_format) 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.option(:format, :alias => :f, :default => 'rails') command_line.option(:apache_format) command_line.option(:file, :alias => :e) command_line.option(:mail, :alias => :m) command_line.option(:parse_strategy, :default => 'assume-correct') command_line.option(:dump) command_line.option(:aggregator, :alias => :a, :multiple => true) command_line.option(:database, :alias => :d) command_line.switch(:reset_database) # 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(:output, :alias => :o, :default => 'FixedWidth') command_line.option(:report_width, :default => terminal_width - 1) command_line.switch(:debug) command_line.minimum_parameters = 1 end rescue CommandLine::Error => e puts "Request-log-analyzer, by Willem van Bergen and Bart ten Brinke - version #{RequestLogAnalyzer::VERSION}" puts "Website: http://railsdoctors.com" puts puts "ARGUMENT ERROR: " + e.message if e.message puts puts "Usage: request-log-analyzer [LOGFILES*] " puts puts "Input options:" puts " --format , -f: Uses the specified log file format. Defaults to rails." puts " --after Only consider requests from or later." puts " --before Only consider requests before ." puts " --select Only consider requests where matches ." puts " --reject Only consider requests where does not match ." puts puts "Output options:" puts " --boring, -b Output reports without ASCII colors." puts " --database , -d: Creates an SQLite3 database of all the parsed request information." puts " --debug Print debug information while parsing." puts " --file Output to file." puts " --mail Send report to an email address." puts " --output Output format. Supports 'HTML' and 'FixedWidth' (default)" puts " --dump Dump the YAML formatted results in the given 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 case arguments.command when :install install_rake_tasks(arguments.parameters[0]) when :console require 'cli/database_console' DatabaseConsole.new(arguments).run! when :strip require File.dirname(__FILE__) + '/../lib/request_log_analyzer/log_processor' RequestLogAnalyzer::LogProcessor.build(:strip, arguments).run! else puts "Request-log-analyzer, by Willem van Bergen and Bart ten Brinke - version #{RequestLogAnalyzer::VERSION}" puts "Website: http://railsdoctors.com" puts # Run the request_log_analyzer! RequestLogAnalyzer::Controller.build(arguments).run! end