Class: ZgcpToolkit::Logger

Inherits:
Object
  • Object
show all
Extended by:
Dry::Configurable
Defined in:
lib/zgcp_toolkit/logger.rb,
lib/zgcp_toolkit/logger/stdout.rb,
lib/zgcp_toolkit/logger/google_cloud_logging.rb

Defined Under Namespace

Classes: Error, GoogleCloudLogging, InvalidLogName, Stdout, UnsupportedLogType

Constant Summary collapse

REGEX_VALID_NAME =
/^[a-z0-9_]+$/.freeze
AVAILABLE_LOGGERS =
{
  std_out: ZgcpToolkit::Logger::Stdout,
  google_cloud_logging: ZgcpToolkit::Logger::GoogleCloudLogging
}
DEFAULT_BACKTRACE_LIMIT =
10

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(log_name) ⇒ Logger

Returns a new instance of Logger.



61
62
63
64
65
# File 'lib/zgcp_toolkit/logger.rb', line 61

def initialize(log_name)
  @log_name = log_name
  @backtrace_limit = DEFAULT_BACKTRACE_LIMIT
  @loggers = ZgcpToolkit::Logger.registered_loggers.map { |logger| logger.new(log_name) }
end

Instance Attribute Details

#backtrace_limitObject

Returns the value of attribute backtrace_limit.



58
59
60
# File 'lib/zgcp_toolkit/logger.rb', line 58

def backtrace_limit
  @backtrace_limit
end

#log_nameObject (readonly)

Returns the value of attribute log_name.



59
60
61
# File 'lib/zgcp_toolkit/logger.rb', line 59

def log_name
  @log_name
end

#loggersObject (readonly)

Returns the value of attribute loggers.



59
60
61
# File 'lib/zgcp_toolkit/logger.rb', line 59

def loggers
  @loggers
end

Class Method Details

.create(log_name) ⇒ Object

Raises:



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/zgcp_toolkit/logger.rb', line 26

def create(log_name)
  raise InvalidLogName, "Log name is invalid. Log name regex is #{REGEX_VALID_NAME.inspect}" unless valid_name?(log_name.to_s)

  logger = Logger.new(log_name.to_s)

  begin
    yield(logger) if block_given?
  rescue StandardError => e
    Google::Cloud::ErrorReporting.report e
  end

  logger
end

.report_error_request(error, request) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/zgcp_toolkit/logger.rb', line 40

def report_error_request(error, request)
  message = ZgcpToolkit::Formatter::Request.new.format_for_report(request)

  Google::Cloud::ErrorReporting.report error do |event|
    event.message = event.message + "\n\n" + message
  end
end

Instance Method Details

#error_request(error, request, **args) ⇒ Object



88
89
90
91
92
# File 'lib/zgcp_toolkit/logger.rb', line 88

def error_request(error, request, **args)
  filter_request_params = ZgcpToolkit::Formatter::Request.new.call(request)

  error({ message: error.message, backtrace: error.backtrace.first(backtrace_limit) }.merge!(filter_request_params).merge!(args))
end

#flush!Object



94
95
96
# File 'lib/zgcp_toolkit/logger.rb', line 94

def flush!
  loggers.each { |a| a.flush! }
end