Class: Logtailer
- Inherits:
-
Object
- Object
- Logtailer
- Defined in:
- lib/smart_machine/templates/dotsmartmachine/config/emailer/docker/logtailer.rb
Instance Method Summary collapse
- #flush ⇒ Object
-
#initialize ⇒ Logtailer
constructor
A new instance of Logtailer.
- #start ⇒ Object
- #stop ⇒ Object
Constructor Details
#initialize ⇒ Logtailer
Returns a new instance of Logtailer.
9 10 11 12 13 14 15 16 |
# File 'lib/smart_machine/templates/dotsmartmachine/config/emailer/docker/logtailer.rb', line 9 def initialize @tailers = { "/var/log/monit.log" => 1, "/var/log/haproxy.log" => 1, "/var/log/mail.log" => 1, "/home/spamd/spamd.log" => 1 } end |
Instance Method Details
#flush ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/smart_machine/templates/dotsmartmachine/config/emailer/docker/logtailer.rb', line 43 def flush set_start_from_line @tailers.each do |path, start_from_line| system("tail --lines=+#{start_from_line} -q #{path} >> /proc/1/fd/1") end save_start_from_line end |
#start ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/smart_machine/templates/dotsmartmachine/config/emailer/docker/logtailer.rb', line 18 def start set_start_from_line pids = [] @tailers.each do |path, start_from_line| pid = Process.spawn("tail", "--lines=+#{start_from_line}", "-q", "-F", "#{path}", [:out, :err] => "/proc/1/fd/1") Process.detach(pid) pids.push(pid) end IO.write("/run/tmpfs/logtailer.pid", "#{pids.join(' ')}\n") puts "Started Logtailer with PIDs " + `cat /run/tmpfs/logtailer.pid`.chomp + "." end |
#stop ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/smart_machine/templates/dotsmartmachine/config/emailer/docker/logtailer.rb', line 32 def stop pids = `cat /run/tmpfs/logtailer.pid`.chomp.split(" ") pids.each do |pid| system("/bin/kill --signal SIGTERM #{pid}") end save_start_from_line puts "Stopped Logtailer with PIDs " + `cat /run/tmpfs/logtailer.pid`.chomp + "." FileUtils.rm("/run/tmpfs/logtailer.pid") end |