bin/remote_syslog in remote_syslog-1.1.1 vs bin/remote_syslog in remote_syslog-1.2.0

- old
+ new

@@ -1,121 +1,6 @@ #!/usr/bin/env ruby -require 'optparse' -require 'yaml' -require 'pathname' -require 'socket' - -require 'daemons' -require 'eventmachine' -require 'eventmachine-tail' - require 'remote_syslog' +require 'remote_syslog/cli' -def remote_syslog_daemon(args) - options = { - :configfile => '/etc/log_files.yml', - :dest_host => 'logs.papertrailapp.com', - :dest_port => 514 - } - daemonize_options = { - :app_name => File.basename($0) || "remote_syslog", - :ARGV => ['start'], - :dir_mode => :system, - :multiple => false, - :ontop => false, - :mode => :exec, - :backtrace => false, - :monitor => false, - :strip_color => false - } - - op = OptionParser.new do |opts| - opts.banner = "Usage: remote_syslog [options] <path to add'l log 1> .. <path to add'l log n>" - opts.separator '' - opts.separator "Example: remote_syslog -c configs/logs.yml -p 12345 /var/log/mysqld.log" - opts.separator '' - opts.separator "Options:" - - opts.on("-c", "--configfile PATH", "Path to config (/etc/log_files.yml)") do |v| - options[:configfile] = File.expand_path(v) - end - opts.on("-d", "--dest-host HOSTNAME", "Destination syslog hostname or IP (logs.papertrailapp.com)") do |v| - options[:dest_host] = v - end - opts.on("-D", "--no-detach", "Don't daemonize and detach from the terminal") do - daemonize_options[:ontop] = true - daemonize_options[:ARGV] = ['run'] - # write PID file in . because /var/run is sometimes only writable by root - daemonize_options[:dir_mode] = :script - daemonize_options[:dir] = '.' - end - opts.on("-f", "--facility FACILITY", "Facility (user)") do |v| - options[:facility] = v.upcase - end - opts.on("-p", "--dest-port PORT", "Destination syslog port (514)") do |v| - options[:dest_port] = v - end - opts.on("-P", "--pid-dir DIRECTORY", "Directory to write .pid file in (/var/run/)") do |v| - daemonize_options[:dir_mode] = :script - daemonize_options[:dir] = v - end - opts.on("-s", "--severity SEVERITY", "Severity (notice)") do |v| - options[:severity] = v.upcase - end - opts.on("--strip-color", "Strip color codes") do - options[:strip_color] = true - end - opts.on_tail("-h", "--help", "Show this message") do - puts opts - exit - end - end - - op.parse! - - files = ARGV - if File.exist?(options[:configfile]) - config = open(options[:configfile]) do |f| - YAML.load(f) - end - - files += config['files'] - if config['destination'] - options[:dest_host] = config['destination']['host'] if config['destination']['host'] - options[:dest_port] = config['destination']['port'] if config['destination']['port'] - end - if config['hostname'] - options[:hostname] = config['hostname'] - end - elsif files.empty? - puts "No filenames provided and #{options[:configfile]} not found." - puts '' - puts op - exit - end - - # handle relative paths before Daemonize changes the wd to / and expand wildcards - files = files.map { |f| Dir.glob(f) }.flatten.map { |f| File.expand_path(f) }.uniq - - Daemons.run_proc(daemonize_options[:app_name], daemonize_options) do - EventMachine.run do - socket = EventMachine.open_datagram_socket('0.0.0.0', 0) - - files.each do |path| - begin - EventMachine::file_tail(File.expand_path(path), RemoteSyslog::Reader, - options[:dest_host], options[:dest_port], - :socket => socket, :facility => options[:facility], - :severity => options[:severity], :strip_color => options[:strip_color], - :hostname => options[:hostname]) - - rescue Errno::ENOENT => e - puts "#{File.expand_path(path)} not found, continuing. (#{e.message})" - end - end - end - end - -end - -remote_syslog_daemon(ARGV) +RemoteSyslog::Cli.process!(ARGV)