class Backup::Logger::Logfile
Public Class Methods
new(options)
click to toggle source
# File lib/backup/logger/logfile.rb, line 78 def initialize(options) @options = options @logfile = setup_logfile truncate! end
Public Instance Methods
log(message)
click to toggle source
# File lib/backup/logger/logfile.rb, line 84 def log(message) File.open(@logfile, "a") { |f| f.puts message.formatted_lines } end
Private Instance Methods
setup_logfile()
click to toggle source
Returns the full path to the log file, based on the configured @options.log_path, and ensures the path to the log file exists.
# File lib/backup/logger/logfile.rb, line 93 def setup_logfile # strip any trailing '/' in case the user supplied this as part of # an absolute path, so we can match it against File.expand_path() path = @options.log_path.chomp("/") if path.empty? path = File.join(Backup::Config.root_path, "log") elsif path != File.expand_path(path) path = File.join(Backup::Config.root_path, path) end FileUtils.mkdir_p(path) log_file = @options.log_file || "backup.log" path = File.join(path, log_file) if File.exist?(path) && !File.writable?(path) raise Error, "Log File at '#{path}' is not writable" end path end
truncate!()
click to toggle source
Truncates the logfile to @options.max_bytes
# File lib/backup/logger/logfile.rb, line 113 def truncate! return unless File.exist?(@logfile) if File.stat(@logfile).size > @options.max_bytes FileUtils.cp(@logfile, @logfile + "~") File.open(@logfile + "~", "r") do |io_in| File.open(@logfile, "w") do |io_out| io_in.seek(-@options.max_bytes, IO::SEEK_END) && io_in.gets while line = io_in.gets io_out.puts line end end end FileUtils.rm_f(@logfile + "~") end end