class Nexaas::Auditor::AuditLogger
Constants
- VALID_LEVELS
Attributes
logger[RW]
Public Class Methods
new(logger=nil)
click to toggle source
# File lib/nexaas/auditor/audit_logger.rb, line 9 def initialize(logger=nil) @logger = logger end
Public Instance Methods
log(options={})
click to toggle source
# File lib/nexaas/auditor/audit_logger.rb, line 17 def log(options={}) level = options.delete(:level) raise ArgumentError, "required key `:level` not found" if level.nil? raise ArgumentError, "key `:level` is invalid: '#{level}'" unless VALID_LEVELS.include?(level.to_s) check_message!(options) safe_call { logger.send(level, to_message(options)) } end
Private Instance Methods
check_message!(options)
click to toggle source
# File lib/nexaas/auditor/audit_logger.rb, line 44 def check_message!(options) measure = options[:measure] || options['measure'] raise ArgumentError, "required key 'measure' not found or empty" if measure.to_s == '' end
safe_call() { |block| ... }
click to toggle source
# File lib/nexaas/auditor/audit_logger.rb, line 36 def safe_call(&block) begin yield(block) rescue => exception logger.fatal("role=audit_logger class=#{self.class} measure=errors.unable_to_log exception=#{exception.class}") end end
to_message(options)
click to toggle source
# File lib/nexaas/auditor/audit_logger.rb, line 27 def to_message(options) # TODO move this logic to a dedicated class and add more tests options.inject(['audit_log=true']) do |array, (key,value)| value = value.respond_to?(:iso8601) ? value.iso8601 : value array << "#{key}=#{value.to_s.strip.gsub(/\s/, '-')}" array end.join(' ') end