class LogPacker::Packer

Public Class Methods

archive_path(logfile) click to toggle source
# File lib/log_packer/packer.rb, line 12
def archive_path(logfile)
  archived_dir = File.dirname(logfile) + '/archived'
  last_dir = File.dirname(logfile) + '/last'
  FileUtils.mkdir(archived_dir) unless File.directory?(archived_dir)
  FileUtils.mkdir(last_dir) unless File.directory?(last_dir)
  archived_dir + '/' + File.basename(logfile) + '.' + Time.now.strftime('%Y%m%d%H%M%S')
end
last_dir(logfile) click to toggle source
# File lib/log_packer/packer.rb, line 20
def last_dir(logfile)
  log_path = File.directory?(logfile) ? logfile : File.dirname(logfile)
  last_dir = log_path + '/last/'
  FileUtils.mkdir(last_dir) unless File.directory?(last_dir)
  last_dir
end
rotate(logfile) click to toggle source
# File lib/log_packer/packer.rb, line 27
def rotate(logfile)
  if !File.exists?(logfile)
    puts "#{logfile} does not exist"
  elsif File.size(logfile) == 0
    puts "#{logfile} is empty"
  else
    archive_file = archive_path(logfile)
    last_dir = last_dir(logfile)
    puts "Copying #{logfile} to #{archive_file}.bz2"
    FileUtil.cp logfile, "#{archive_file}"
    truncate logfile
    system "bzip2 #{archive_file}"
    system "cd #{last_dir} && ln -sf #{archive_file}.bz2 ."
  end
end
truncate(file) click to toggle source

Functions

# File lib/log_packer/packer.rb, line 8
def truncate(file)
  `echo '' > #{file}`
end