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