module LogSweeper
Constants
- VERSION
Public Instance Methods
run(path, logs_lifetime_days_count: 10, logger: Logger.new(STDOUT))
click to toggle source
Clean up provided log directory @param path [String, Pathname] path to the log directory to clean @param logs_lifetime_days_count [Numeric] number of days to keep the logs @param logger [Logger] logger to use
# File lib/log_sweeper.rb, line 16 def run(path, logs_lifetime_days_count: 10, logger: Logger.new(STDOUT)) lifetime_threshold = logs_lifetime_days_count * 24 * 3600 Pathname.new(path).each_child do |entry| next unless entry.file? filename = entry.basename.to_s if filename =~ /\.log\b/ && Time.now - entry.mtime > lifetime_threshold logger.info "deleting #{entry}" entry.delete elsif filename =~ /\.log\.\d+$/ logger.info "gzipping #{entry}" compress_file(entry) entry.delete else logger.info "skipping #{entry}" end end true end
Private Instance Methods
compress_file(file_name)
click to toggle source
# File lib/log_sweeper.rb, line 41 def compress_file(file_name) zipped = "#{file_name}.gz" Zlib::GzipWriter.open(zipped) do |gz| File.open(file_name) do |file| loop do chunk = file.read(16 * 1024) or break gz.write(chunk) end end end end