Class: Yell::Adapters::Base
- Inherits:
-
Object
- Object
- Yell::Adapters::Base
- Includes:
- Level::Helpers
- Defined in:
- lib/yell/adapters/base.rb
Overview
This class provides the basic interface for all allowed operations on any adapter implementation. Other adapters should inherit from it for the methods used by the Logger.
Writing your own adapter is really simple. Inherit from the base class and use the ‘setup`, `write` and `close` methods. Yell requires the `write` method to be specified (`setup` and `close` are optional).
The following example shows how to define a basic Adapter to format and print log events to STDOUT:
class PutsAdapter < Yell::Adapters::Base
include Yell::Formatter::Helpers
setup do ||
self.format = [:format]
end
write do |event|
= format.format(event)
STDOUT.puts
end
end
After the Adapter has been written, we need to register it to Yell:
Yell::Adapters.register :puts, PutsAdapter
Now, we can use it like so:
logger = Yell.new :puts
logger.info "Hello World!"
Direct Known Subclasses
Instance Attribute Summary
Attributes included from Level::Helpers
Class Method Summary collapse
-
.close(&block) ⇒ Object
Define your close method with this helper.
-
.setup(&block) ⇒ Object
Setup your adapter with this helper method.
-
.write(&block) ⇒ Object
Define your write method with this helper.
Instance Method Summary collapse
-
#close ⇒ Object
Close the adapter (stream, connection, etc).
-
#initialize(options = {}, &block) ⇒ Base
constructor
Initializes a new Adapter.
-
#write(event) ⇒ Object
The main method for calling the adapter.
Constructor Details
#initialize(options = {}, &block) ⇒ Base
Initializes a new Adapter.
You should not overload the constructor, use #setup instead.
127 128 129 130 131 132 |
# File 'lib/yell/adapters/base.rb', line 127 def initialize( = {}, &block ) @mutex = Mutex.new setup!() block.call(self) if block end |
Class Method Details
.close(&block) ⇒ Object
Define your close method with this helper.
73 74 75 |
# File 'lib/yell/adapters/base.rb', line 73 def close( &block ) compile!( :close!, &block ) end |
.setup(&block) ⇒ Object
Setup your adapter with this helper method.
53 54 55 |
# File 'lib/yell/adapters/base.rb', line 53 def setup( &block ) compile!( :setup!, &block ) end |
.write(&block) ⇒ Object
Define your write method with this helper.
63 64 65 |
# File 'lib/yell/adapters/base.rb', line 63 def write( &block ) compile!( :write!, &block ) end |
Instance Method Details
#close ⇒ Object
Close the adapter (stream, connection, etc).
Adapter classes should provide their own implementation of this method.
151 152 153 |
# File 'lib/yell/adapters/base.rb', line 151 def close close! end |
#write(event) ⇒ Object
The main method for calling the adapter.
The method receives the log ‘event` and determines whether to actually write or not.
138 139 140 141 142 143 144 145 |
# File 'lib/yell/adapters/base.rb', line 138 def write( event ) synchronize { write!(event) } if write?(event) rescue Exception => e # make sure the adapter is closed and re-raise the exception synchronize { close } raise( e ) end |