class Sapience::Configuration
rubocop:disable ClassVars
Constants
- DEFAULT
- SUPPORTED_EXECUTORS
Attributes
ap_options[RW]
app_name[RW]
appenders[RW]
backtrace_level[R]
backtrace_level_index[R]
default_level[R]
error_handler[RW]
filter_parameters[RW]
grape_metrics[RW]
host[W]
log_executor[RW]
metrics[RW]
rails_ac_metrics[RW]
silent_active_record[RW]
silent_rack[RW]
silent_rails[RW]
Public Class Methods
new(options = {})
click to toggle source
Initial default Level for all new instances of Sapience::Logger
# File lib/sapience/configuration.rb, line 32 def initialize(options = {}) # rubocop:disable AbcSize fail ArgumentError, "options need to be a hash #{options.inspect}" unless options.is_a?(Hash) @options = DEFAULT.merge(options.dup.deep_symbolize_keyz!) @options[:log_executor] &&= @options[:log_executor].to_sym validate_log_executor!(@options[:log_executor]) self.default_level = @options[:log_level].to_sym self.backtrace_level = @options[:log_level].to_sym self.host = @options[:host] self.app_name = @options[:app_name] self.ap_options = @options[:ap_options] self.appenders = @options[:appenders] self.log_executor = @options[:log_executor] self.filter_parameters = @options[:filter_parameters] self.metrics = @options[:metrics] self.error_handler = @options[:error_handler] self.silent_active_record = @options[:silent_active_record] self.silent_rails = @options[:silent_rails] self.silent_rack = @options[:silent_rack] self.rails_ac_metrics = @options[:rails_ac_metrics] self.grape_metrics = @options[:grape_metrics] end
Public Instance Methods
backtrace_level=(level)
click to toggle source
Sets the level at which backtraces should be captured for every log message.
By enabling backtrace capture the filename and line number of where message was logged can be written to the log file. Additionally, the backtrace can be forwarded to error management services such as Bugsnag.
Warning:
Capturing backtraces is very expensive and should not be done all the time. It is recommended to run it at :error level in production.
# File lib/sapience/configuration.rb, line 116 def backtrace_level=(level) @backtrace_level = level # For performance reasons pre-calculate the level index @backtrace_level_index = level.nil? ? 65_535 : level_to_index(level) end
default_level=(level)
click to toggle source
Sets the global default log level
# File lib/sapience/configuration.rb, line 55 def default_level=(level) @default_level = level # For performance reasons pre-calculate the level index @default_level_index = level_to_index(level) end
default_level_index()
click to toggle source
# File lib/sapience/configuration.rb, line 102 def default_level_index Thread.current[:sapience_silence] || @default_level_index end
fail_with_unkown_log_level!(level)
click to toggle source
# File lib/sapience/configuration.rb, line 83 def fail_with_unkown_log_level!(level) fail UnkownLogLevel, "Invalid level:#{level.inspect} being requested." \ " Must be one of #{LEVELS.inspect}" end
host()
click to toggle source
Returns [String] name of this host for logging purposes Note: Not all appenders use `host`
# File lib/sapience/configuration.rb, line 124 def host @host ||= Socket.gethostname end
index_to_level(level_index)
click to toggle source
Returns the symbolic level for the supplied level index
# File lib/sapience/configuration.rb, line 62 def index_to_level(level_index) LEVELS[level_index] end
level_by_index_or_error(constant)
click to toggle source
# File lib/sapience/configuration.rb, line 98 def level_by_index_or_error(constant) LEVELS.find_index(constant.downcase.to_sym) || LEVELS.find_index(:error) end
level_to_index(level)
click to toggle source
Internal method to return the log level as an internal index Also supports mapping the ::Logger levels to Sapience
levels
# File lib/sapience/configuration.rb, line 68 def level_to_index(level) return if level.nil? case level when Symbol LEVELS.index(level) when String LEVELS.index(level.downcase.to_sym) when Integer map_levels[level] || fail_with_unkown_log_level!(level) else fail_with_unkown_log_level!(level) end end
map_levels()
click to toggle source
Mapping of Rails
and Ruby Logger
levels to Sapience
levels
# File lib/sapience/configuration.rb, line 90 def map_levels return [] unless defined?(::Logger::Severity) @@map_levels ||= ::Logger::Severity.constants.each_with_object([]) do |constant, levels| levels[::Logger::Severity.const_get(constant)] = level_by_index_or_error(constant) end end
validate_log_executor!(log_executor)
click to toggle source
# File lib/sapience/configuration.rb, line 128 def validate_log_executor!(log_executor) return true if SUPPORTED_EXECUTORS.include?(log_executor) fail InvalidLogExecutor, "#{log_executor} is unsupported. Use (#{SUPPORTED_EXECUTORS.join(", ")})" end