object_logging
Super simple logging for objects.
Why?
It’s a pain to trudge through large log files. Sometimes you just want to see log messages for one particular object.
Usage
class Something
include ObjectLogging
def foo
logger.debug "entering"
logger.info "leaving"
end
end
something = Something.new
something.foo
puts something.logger.log # => [DEBUG] Something#foo entering
# [INFO] Something#foo leaving
This logs to memory. Your log will be gone when the object goes out of scope.
Logging to the Rails cache
class Something
include ObjectLogging
object_logging :rails_cache, :id => :proc_or_method_name_to_identify_object
end
This is useful for when you want to view the log after the object goes out of scope.
The option :id
needs to a Proc or method name that returns a string that uniquely identifies the object (i.e. will be used as the cache key).
Logging to the Rails log or STDOUT
class Something
include ObjectLogging
object_logging :rails_log
end
class Something
include ObjectLogging
object_logging :stdout
end
This logs to memory, but also logs to Rails.logger
or STDOUT
.
Sharing loggers
You can pass Logger instances between your objects. This is useful for when you want an object to temporarily log to another object’s log.
a = Account.new
u = User.new
a.logger.entries.length # => 0
u.logger.entries.length # => 0
a.logger.debug "blah"
u.logger.debug "bleh"
u.logger = a.logger
u.logger.debug "weee"
a.logger.entries.length # => 2
u.logger.entries.length # => 1
Copyright
Copyright © 2010 Christopher J. Bottaro. See LICENSE for details.