Module: LogSweeper

Extended by:
LogSweeper
Included in:
LogSweeper
Defined in:
lib/log_sweeper.rb,
lib/log_sweeper/version.rb

Constant Summary collapse

VERSION =
"1.2.0"

Instance Method Summary collapse

Instance Method Details

#run(path, logs_lifetime_days_count: 10, logger: Logger.new(STDOUT)) ⇒ Object

Clean up provided log directory

Parameters:

  • path (String, Pathname)

    path to the log directory to clean

  • logs_lifetime_days_count (Numeric) (defaults to: 10)

    number of days to keep the logs

  • logger (Logger) (defaults to: Logger.new(STDOUT))

    logger to use



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 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