1
0
mirror of https://github.com/meineerde/rackstash.git synced 2025-10-17 14:01:01 +00:00

Add Null adapter which just swallows any logs

This commit is contained in:
Holger Just 2017-07-19 13:07:31 +02:00
parent ca339a84fa
commit b573581a26
3 changed files with 89 additions and 0 deletions

View File

@ -89,3 +89,4 @@ require 'rackstash/logger'
require 'rackstash/adapters/callable' require 'rackstash/adapters/callable'
require 'rackstash/adapters/file' require 'rackstash/adapters/file'
require 'rackstash/adapters/io' require 'rackstash/adapters/io'
require 'rackstash/adapters/null'

View File

@ -0,0 +1,43 @@
# frozen_string_literal: true
# Copyright 2017 Holger Just
#
# This software may be modified and distributed under the terms
# of the MIT license. See the LICENSE.txt file for details.
require 'rackstash/adapters/adapter'
require 'rackstash/encoders/raw'
module Rackstash
module Adapters
# This adapter swallows all logs sent to it without writing them anywhere.
#
# It is probably not very useful for production use but can be used to test
# the {Flow} pipeline.
class Null < Adapter
register_for NilClass
# Create a new black hole adapter. Any logs written to it will be
# swallowed and not written anywhere.
def initialize(*)
end
# By default, we use a {Rackstash::Encoders::Raw} encoder to encode the
# events. Since we are ignoreing them anyway, there is no need for fancy
# formatting here.
#
# @return [Rackstash::Encoders::Raw] a new Raw encoder
def default_encoder
Rackstash::Encoders::Raw.new
end
# Swallow a log event. It is not written anywhere.
#
# @param log [Object] the encoded log event
# @return [nil]
def write_single(log)
nil
end
end
end
end

View File

@ -0,0 +1,45 @@
# frozen_string_literal: true
# Copyright 2017 Holger Just
#
# This software may be modified and distributed under the terms
# of the MIT license. See the LICENSE.txt file for details.
require 'spec_helper'
require 'rackstash/adapters/null'
describe Rackstash::Adapters::Null do
let(:adapter) { described_class.new }
describe '#initialize' do
it 'accepts and ignores any arguments' do
expect { described_class.new }.not_to raise_error
expect { described_class.new(:foo, :bar, :baz) }.not_to raise_error
end
end
describe '.default_encoder' do
it 'returns a Raw encoder' do
expect(adapter.default_encoder).to be_instance_of Rackstash::Encoders::Raw
end
end
describe '#close' do
it 'does nothing' do
expect { adapter.close }.not_to raise_error
end
end
describe '#reopen' do
it 'does nothing' do
expect { adapter.reopen }.not_to raise_error
end
end
describe '#write_single' do
it 'does nothing' do
expect { adapter.write('a log line') }.not_to raise_error
end
end
end