1
0
mirror of https://github.com/meineerde/rackstash.git synced 2026-02-01 01:37:12 +00:00

Extract resolving of severity values to Rackstash.severity

This commit is contained in:
Holger Just 2017-10-05 18:30:08 +02:00
parent c371e072c5
commit b6d15a8da7
6 changed files with 78 additions and 54 deletions

View File

@ -49,6 +49,8 @@ module Rackstash
# its numeric value or its name in most variations (`Symbol`, `String`,
# different cases).
#
# If the given severity if unknown or out of range, we return `"ANY"`.
#
# @param severity [Integer, #to_s] A numeric value of one of the {SEVERITIES}
# or a {SEVERITY_NAMES} key
# @return [String] one of the {SEVERITY_LABELS}
@ -62,6 +64,26 @@ module Rackstash
end
end
# Resolve a given severity to its numeric value. You can specify the severity
# either by its numeric value (generally one of the {SEVERITIES}), or its name
# in most variations (`Symbol`, `String`, different cases), i.e. one of the
# {SEVERITY_NAMES}.
#
# If an invalid severity name is given, we raise an `ArgumentError`. All
# Integer values are accepted without further checks.
#
# @param severity [Integer, #to_s] A numeric value of one of the {SEVERITIES}
# or a {SEVERITY_NAMES} key)
# @raise [ArgumentError] if an invalid severity name is given.
# @return [Integer] the resolved severity
def self.severity(severity)
return severity if severity.is_a?(Integer)
SEVERITY_NAMES.fetch(severity.to_s.downcase) do
raise ArgumentError, "invalid log severity: #{severity.inspect}"
end
end
PROGNAME = "rackstash/v#{Rackstash::VERSION}".freeze
# A class for the {UNDEFINED} object. Generally, there will only be exactly

View File

@ -69,13 +69,7 @@ module Rackstash
# @raise [ArgumentError] if no severity could be found for the given
# value.
def severity=(severity)
if severity.is_a?(Integer)
@severity = severity
else
@severity = SEVERITY_NAMES.fetch(severity.to_s.downcase) do
raise ArgumentError, "invalid log severity: #{severity.inspect}"
end
end
@severity = Rackstash.severity(severity)
end
# Close the base logger (if supported). The exact behavior is dependent on

View File

@ -168,13 +168,7 @@ module Rackstash
# @param severity [Integer, String, Symbol] one of the {SEVERITIES} or its
# name
def level=(severity)
if severity.is_a?(Integer)
@level = severity
else
@level = SEVERITY_NAMES.fetch(severity.to_s.downcase) do
raise ArgumentError, "invalid log level: #{severity}"
end
end
@level = Rackstash.severity(severity)
end
# (see Sink#close)

View File

@ -84,6 +84,19 @@ describe Rackstash::Adapters::Logger do
end
end
describe '#severity' do
it 'defaults to INFO' do
expect(adapter.severity).to eql 1
end
it 'resolves value with Rackstash.severity' do
adapter # initialize the logger
expect(Rackstash).to receive(:severity).with(:WaRn).and_call_original
adapter.severity = :WaRn
expect(adapter.severity).to eql 2
end
end
describe '#reopen' do
context 'with logger' do
it 'closes the logger object' do

View File

@ -160,47 +160,12 @@ describe Rackstash::Logger do
expect(logger.level).to eql 0
end
it 'can be set as an integer' do
logger.level = 3
it 'resolves value with Rackstash.severity' do
logger # initialize the logger
expect(Rackstash).to receive(:severity).with(:ErRor).and_call_original
logger.level = :ErRor
expect(logger.level).to eql 3
logger.level = 42
expect(logger.level).to eql 42
logger.level = -25
expect(logger.level).to eql(-25)
end
it 'can be set as a symbol' do
%i[debug info warn error fatal unknown].each_with_index do |level, i|
logger.level = level
expect(logger.level).to eql i
end
%i[DeBuG InFo WaRn ErRoR FaTaL UnKnOwN].each_with_index do |level, i|
logger.level = level
expect(logger.level).to eql i
end
end
it 'can be set as a string' do
%w[debug info warn error fatal unknown].each_with_index do |level, i|
logger.level = level
expect(logger.level).to eql i
end
%w[DeBuG InFo WaRn ErRoR FaTaL UnKnOwN].each_with_index do |level, i|
logger.level = level
expect(logger.level).to eql i
end
end
it 'rejects invalid values' do
expect { logger.level = 'invalid' }.to raise_error(ArgumentError)
expect { logger.level = Object.new }.to raise_error(ArgumentError)
expect { logger.level = nil }.to raise_error(ArgumentError)
expect { logger.level = false }.to raise_error(ArgumentError)
expect { logger.level = true }.to raise_error(ArgumentError)
end
it 'can set all the levels' do

View File

@ -100,6 +100,42 @@ describe Rackstash do
end
end
describe '.severity' do
it 'can be set as an integer' do
expect(Rackstash.severity(3)).to eql 3
expect(Rackstash.severity(42)).to eql 42
expect(Rackstash.severity(-25)).to eql(-25)
end
it 'can be set as a symbol' do
%i[debug info warn error fatal unknown].each_with_index do |level, i|
expect(Rackstash.severity(level)).to eql i
end
%i[DeBuG InFo WaRn ErRoR FaTaL UnKnOwN].each_with_index do |level, i|
expect(Rackstash.severity(level)).to eql i
end
end
it 'can be set as a string' do
%w[debug info warn error fatal unknown].each_with_index do |level, i|
expect(Rackstash.severity(level)).to eql i
end
%w[DeBuG InFo WaRn ErRoR FaTaL UnKnOwN].each_with_index do |level, i|
expect(Rackstash.severity(level)).to eql i
end
end
it 'rejects invalid values' do
expect { Rackstash.severity('invalid') }.to raise_error(ArgumentError)
expect { Rackstash.severity(Object.new) }.to raise_error(ArgumentError)
expect { Rackstash.severity(nil) }.to raise_error(ArgumentError)
expect { Rackstash.severity(false) }.to raise_error(ArgumentError)
expect { Rackstash.severity(true) }.to raise_error(ArgumentError)
end
end
describe '.error_flow' do
it 'returns a default Flow' do
expect(described_class.error_flow).to be_instance_of Rackstash::Flow