45 lines
814 B
Ruby
45 lines
814 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'time'
|
||
|
require 'fileutils'
|
||
|
|
||
|
# Loggman class
|
||
|
class Loggman
|
||
|
def initialize(logfile)
|
||
|
@logfile = logfile
|
||
|
end
|
||
|
|
||
|
def log(message, level = :info)
|
||
|
delete_old_logs
|
||
|
timestamp = Time.now.strftime('%Y-%m-%d %H:%M:%S')
|
||
|
File.open(@logfile, 'a') do |file|
|
||
|
file.puts "[#{timestamp}] [#{level.to_s.upcase}] #{message}"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def info(message)
|
||
|
log(message, :info)
|
||
|
end
|
||
|
|
||
|
def warn(message)
|
||
|
log(message, :warn)
|
||
|
end
|
||
|
|
||
|
def error(message)
|
||
|
log(message, :error)
|
||
|
end
|
||
|
|
||
|
def debug(message)
|
||
|
log(message, :debug)
|
||
|
end
|
||
|
|
||
|
def delete_old_logs
|
||
|
max_age_days = 7
|
||
|
max_age_seconds = max_age_days * 24 * 60 * 60
|
||
|
|
||
|
if File.exist?(@logfile) && Time.now - File.mtime(@logfile) > max_age_seconds
|
||
|
FileUtils.rm(@logfile)
|
||
|
end
|
||
|
end
|
||
|
end
|