Module: Teems::Support::ErrorLogger

Defined in:
lib/teems/support/error_logger.rb

Overview

Logs errors to a file for debugging

Class Method Summary collapse

Class Method Details

.append_error_entry(log_file, error) ⇒ Object



17
18
19
20
# File 'lib/teems/support/error_logger.rb', line 17

def append_error_entry(log_file, error)
  File.open(log_file, 'a') { |file| write_entry(file, error) }
  log_file
end

.log(error, paths: XdgPaths.new) ⇒ Object



9
10
11
12
13
14
15
# File 'lib/teems/support/error_logger.rb', line 9

def log(error, paths: XdgPaths.new)
  log_file = prepare_log_file(paths)
  append_error_entry(log_file, error)
rescue SystemCallError, IOError => e
  warn "teems: Could not write error log: #{e.message}"
  nil
end

.prepare_log_file(paths) ⇒ Object



22
23
24
25
# File 'lib/teems/support/error_logger.rb', line 22

def prepare_log_file(paths)
  paths.ensure_cache_dir
  paths.cache_file('error.log')
end

.write_entry(file, error) ⇒ Object



27
28
29
30
31
32
# File 'lib/teems/support/error_logger.rb', line 27

def write_entry(file, error)
  file.puts "#{Time.now.iso8601} - #{error.class}: #{error.message}"
  backtrace = error.backtrace
  file.puts backtrace.first(10).map { |line| "  #{line}" }.join("\n") if backtrace
  file.puts
end