class StackifyRubyAPM::Spies::LoggerSpy

Constants

EXCEPTION
NAME
TYPE

Public Class Methods

get_log_context(severity, message, progname) click to toggle source

create and return logger span context

# File lib/stackify_apm/spies/logger.rb, line 72
def self.get_log_context(severity, message, progname)
  ctx = nil

  begin
    log_message = ''
    exception = nil

    if message.nil?
      msg = progname
    else
      msg = message
    end

    case msg
    when ::String
      log_message = msg
    when ::Exception
      log_message = msg.message
      exception = "(#{ msg.class })\n#{ msg.backtrace.join("\n") if msg.backtrace }"
    else
      log_message = msg.inspect
    end

    ctx = Span::Context.new(
      CATEGORY: 'Log',
      SUBCATEGORY: 'Logger',
      LEVEL: severity || 'ANY',
      MESSAGE: log_message,
      PREFIX: 'TRUE'
    )

    if exception
      ctx.EXCEPTION = exception
    end
  rescue Exception => e
    StackifyRubyAPM.agent.error "[LoggerSpy] Error: creating span context."
    StackifyRubyAPM.agent.error "[LoggerSpy] #{e.inspect}"
  end

  ctx
end

Public Instance Methods

debug(progname = nil, &block) click to toggle source
# File lib/stackify_apm/spies/logger.rb, line 21
def debug(progname = nil, &block)
  return debug_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
  ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('DEBUG', nil, progname, &block)
  StackifyRubyAPM.span NAME, TYPE, context: ctx do
    debug_without_apm(progname, &block)
  end
end
error(progname = nil, &block) click to toggle source
# File lib/stackify_apm/spies/logger.rb, line 45
def error(progname = nil, &block)
  return error_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
  ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('ERROR', nil, progname, &block)
  StackifyRubyAPM.span NAME, TYPE, context: ctx do
    error_without_apm(progname, &block)
  end
end
fatal(progname = nil, &block) click to toggle source
# File lib/stackify_apm/spies/logger.rb, line 53
def fatal(progname = nil, &block)
  return fatal_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
  ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('FATAL', nil, progname, &block)
  StackifyRubyAPM.span NAME, TYPE, context: ctx do
    fatal_without_apm(progname, &block)
  end
end
info(progname = nil, &block) click to toggle source
# File lib/stackify_apm/spies/logger.rb, line 29
def info(progname = nil, &block)
  return info_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
  ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('INFO', nil, progname, &block)
  StackifyRubyAPM.span NAME, TYPE, context: ctx do
    info_without_apm(progname, &block)
  end
end
install() click to toggle source
# File lib/stackify_apm/spies/logger.rb, line 12
def install
  Logger.class_eval do
    alias_method 'debug_without_apm', 'debug'
    alias_method 'info_without_apm', 'info'
    alias_method 'warn_without_apm', 'warn'
    alias_method 'error_without_apm', 'error'
    alias_method 'fatal_without_apm', 'fatal'
    alias_method 'unknown_without_apm', 'unknown'

    def debug(progname = nil, &block)
      return debug_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
      ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('DEBUG', nil, progname, &block)
      StackifyRubyAPM.span NAME, TYPE, context: ctx do
        debug_without_apm(progname, &block)
      end
    end

    def info(progname = nil, &block)
      return info_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
      ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('INFO', nil, progname, &block)
      StackifyRubyAPM.span NAME, TYPE, context: ctx do
        info_without_apm(progname, &block)
      end
    end

    def warn(progname = nil, &block)
      return warn_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
      ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('WARN', nil, progname, &block)
      StackifyRubyAPM.span NAME, TYPE, context: ctx do
        warn_without_apm(progname, &block)
      end
    end

    def error(progname = nil, &block)
      return error_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
      ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('ERROR', nil, progname, &block)
      StackifyRubyAPM.span NAME, TYPE, context: ctx do
        error_without_apm(progname, &block)
      end
    end

    def fatal(progname = nil, &block)
      return fatal_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
      ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('FATAL', nil, progname, &block)
      StackifyRubyAPM.span NAME, TYPE, context: ctx do
        fatal_without_apm(progname, &block)
      end
    end

    def unknown(progname = nil, &block)
      return unknown_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
      ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('UNKNOWN', nil, progname, &block)
      StackifyRubyAPM.span NAME, TYPE, context: ctx do
        unknown_without_apm(progname, &block)
      end
    end
  end
end
unknown(progname = nil, &block) click to toggle source
# File lib/stackify_apm/spies/logger.rb, line 61
def unknown(progname = nil, &block)
  return unknown_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
  ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('UNKNOWN', nil, progname, &block)
  StackifyRubyAPM.span NAME, TYPE, context: ctx do
    unknown_without_apm(progname, &block)
  end
end
warn(progname = nil, &block) click to toggle source
# File lib/stackify_apm/spies/logger.rb, line 37
def warn(progname = nil, &block)
  return warn_without_apm(progname, &block) unless StackifyRubyAPM.current_transaction
  ctx = StackifyRubyAPM::Spies::LoggerSpy.get_log_context('WARN', nil, progname, &block)
  StackifyRubyAPM.span NAME, TYPE, context: ctx do
    warn_without_apm(progname, &block)
  end
end