class Pantheios::Services::StandardLogServiceAdapter

An adapter class that fulfils the Pantheios LogService protocol in terms an instance of the standard Ruby logger

NOTE: The LogService protocol is implemented by a class that provides the instance methods +severity_logged?(severity : Object) : boolean+ and +log(severity : Object, t : Time, prefix : String|Array, msg : String)+

Constants

SEV_LEVELS_EXT2INT
SEV_LEVELS_EXT2NUM
SEV_LEVELS_INT2PAIR
STOCK_SEVS_EXT2NUM

Attributes

adapter_threshold[R]

The threshold of the adapter, as expressed in a Pantheios severity level

NOTE: may be nil, in which case the decision to determine whether to log (in the form of the severity_logged? method) will be defered to the underlying logger.

Public Class Methods

new(logger, adapter_threshold = nil, **options) click to toggle source
# File lib/pantheios/services/standard_log_service_adapter.rb, line 131
def initialize logger, adapter_threshold = nil, **options

        check_parameter logger, 'logger', responds_to: [ :add, :level, :level= ]
        check_parameter adapter_threshold, 'adapter_threshold', types: [ ::Integer, ::Symbol ], allow_nil: true
        format = check_option options, :format, type: ::Symbol, values: [ :default, :simple, :standard ], allow_nil: true

        @logger                               =  logger
        @format                               =  format || :default
        @adapter_threshold    =  adapter_threshold
        @at_value                     = nil
        @closed                               =  false
end

Public Instance Methods

adapter_threshold=(threshold) click to toggle source
# File lib/pantheios/services/standard_log_service_adapter.rb, line 152
def adapter_threshold= threshold

        case @adapter_threshold       =     threshold
        when nil

                @at_value    =  nil
        when ::Symbol

                @at_value    =  STOCK_SEVS_EXT2NUM[threshold]
        when ::Integer

                @at_value    =  threshold
        else

                raise ::TypeError, 'adapter_threshold must be a symbol, an integer value, or nil'
        end
end
close() click to toggle source
# File lib/pantheios/services/standard_log_service_adapter.rb, line 170
def close

        raise "already closed" if @closed

        @logger.close

        @closed = true
end
flush() click to toggle source
# File lib/pantheios/services/standard_log_service_adapter.rb, line 179
def flush

        @logger.flush if @logger.respond_to? :flush
end
log(severity, t, prefix, msg) click to toggle source
# File lib/pantheios/services/standard_log_service_adapter.rb, line 220
def log severity, t, prefix, msg

        sev_ext               =    STOCK_SEVS_EXT2NUM[severity]
        sev_ext               ||=  severity if ::Integer === severity
        sev_int               =    SEV_LEVELS_EXT2NUM[sev_ext]
        sev_int               ||=  ::Logger::UNKNOWN

        case @format
        when :default

                prog_name    =  ::Pantheios::Util::ProcessUtil.derive_process_name $0

                @logger.add sev_int, msg, prog_name
        when :simple

                @logger << msg + ?\n
        when :standard

                @logger << "#{prefix}#{msg}\n"
        end
end
severity_logged?(severity) click to toggle source
# File lib/pantheios/services/standard_log_service_adapter.rb, line 184
def severity_logged? severity

        case severity
        when nil

                return true
        when adapter_threshold

                return true
        when ::Symbol

                sev  =        STOCK_SEVS_EXT2NUM[severity] || 0
        when ::Integer

                sev  =        severity
        else

                warn "severity - '#{severity}' - of invalid type (#{severity.class}) specified to severity_logged?"

                return true
        end


        unless adapter_threshold

                # ask the logger

                sym, val = SEV_LEVELS_INT2PAIR[@logger.level]

                return sev <= val
        end


        return sev <= @at_value
end