Class: Xlog::Xlogger

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/xlog/xlogger.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeXlogger

Returns a new instance of Xlogger.



9
10
11
12
13
14
15
# File 'lib/xlog/xlogger.rb', line 9

def initialize
  @base_logger = ActiveSupport::TaggedLogging.new(Logger.new("log/xlog_#{Rails.env}.log", 'weekly'))

  @app_name = Rails.application.class.to_s.split('::')[0].underscore
  @app_root = Rails.root.to_s
  @folder_names_to_remove = Dir.glob('app/*').map { |f| f.gsub('app/', '') }
end

Instance Attribute Details

#app_nameObject

Returns the value of attribute app_name.



7
8
9
# File 'lib/xlog/xlogger.rb', line 7

def app_name
  @app_name
end

#app_rootObject

Returns the value of attribute app_root.



7
8
9
# File 'lib/xlog/xlogger.rb', line 7

def app_root
  @app_root
end

#base_loggerObject

Returns the value of attribute base_logger.



7
8
9
# File 'lib/xlog/xlogger.rb', line 7

def base_logger
  @base_logger
end

Instance Method Details

#and_raise_error(e, message, data, tags, file_prefix: nil) ⇒ Object



37
38
39
40
# File 'lib/xlog/xlogger.rb', line 37

def and_raise_error(e, message, data, tags, file_prefix: nil)
  log(:error, "#{e.class}: #{e.try(:message)}. #{newline} #{compose_log(message, data)} #{newline} Error backtrace: #{newline} #{backtrace(e)}", tags, file_prefix: file_prefix)
  message.present? ? raise(e, message) : raise(e)
end

#custom_logger=(logger) ⇒ Object



42
43
44
# File 'lib/xlog/xlogger.rb', line 42

def custom_logger=(logger)
  @base_logger = ActiveSupport::TaggedLogging.new(logger)
end

#error(e, message, data, tags, file_prefix: nil) ⇒ Object

do NOT refactor error and and_raise_error



32
33
34
35
# File 'lib/xlog/xlogger.rb', line 32

def error(e, message, data, tags, file_prefix: nil)
  # they MUST BE NOT DRY in order to log correct backtrace
  log(:error, "#{e.class}: #{e.try(:message)}. \n #{compose_log(message, data)} \n Error backtrace: \n#{backtrace(e)}", tags, file_prefix: file_prefix)
end

#info(message, data, tags, file_prefix: nil) ⇒ Object



23
24
25
# File 'lib/xlog/xlogger.rb', line 23

def info(message, data, tags, file_prefix: nil)
  log(:info, compose_log(message, data), tags, file_prefix: file_prefix)
end

#log(type, text, tags, file_prefix: nil) ⇒ Object



17
18
19
20
21
# File 'lib/xlog/xlogger.rb', line 17

def log(type, text, tags, file_prefix: nil)
  logger = logger_for(file_prefix)
  tags = [time_stamp, called_from(type), type] + Array.wrap(tags)
  logger.tagged(tags.compact) { logger.send(type, text) }
end

#logger_for(file_prefix) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/xlog/xlogger.rb', line 46

def logger_for(file_prefix)
  return @base_logger if file_prefix.blank?

  ActiveSupport::TaggedLogging.new(
    Logger.new("log/#{['xlog', file_prefix, Rails.env].compact.join('_')}.log", 'weekly')
  )
end

#warn(message, data, tags, file_prefix: nil) ⇒ Object



27
28
29
# File 'lib/xlog/xlogger.rb', line 27

def warn(message, data, tags, file_prefix: nil)
  log(:warn, compose_log(message, data), tags, file_prefix: file_prefix)
end