module Informed
{Informed}, when included, makes it easy to log method calls when they start and finish. It provides a means to log additional data, such as the result of said calls, keyword arguments, or other instance methods.
@example
class FancyService attr_accessor :fanciness include Informed def initialize(fanciness:) self.fanciness = fanciness end def do_something(force: false) if fancy? || force do_it_fancy else do_it_plain end end inform_on :do_something, level: :info, also_log: { result: true, values: [:fancy?, :force, :fanciness]} def fancy? fanciness > 10 end def do_it_plain "so plain" end def do_it_fancy "so fancy" end end FancyService.new(fanciness: 12).do_something # I, [2017-04-04T19:46:05.256753 #29957] INFO -- : {:method=>:do_something, :values=>{:fancy?=>true, :fanciness=>12}, :status=>:starting} # I, [2017-04-04T19:46:05.256896 #29957] INFO -- : {:method=>:do_something, :values=>{:fancy?=>true, :fanciness=>12}, :status=>:done, :result=>"so fancy"} # => "so fancy" FancyService.new(fanciness: 12).do_something(force: true) # I, [2017-04-04T19:46:09.043051 #29957] INFO -- : {:method=>:do_something, :values=>{:fancy?=>true, :force=>true, :fanciness=>12}, :status=>:starting} # I, [2017-04-04T19:46:09.043159 #29957] INFO -- : {:method=>:do_something, :values=>{:fancy?=>true, :force=>true, :fanciness=>12}, :status=>:done, :result=>"so fancy"} # => "so fancy" FancyService.new(fanciness: 8).do_something(force: true) # I, [2017-04-04T19:46:17.968960 #29957] INFO -- : {:method=>:do_something, :values=>{:fancy?=>false, :force=>true, :fanciness=>8}, :status=>:starting} # I, [2017-04-04T19:46:17.969066 #29957] INFO -- : {:method=>:do_something, :values=>{:fancy?=>false, :force=>true, :fanciness=>8}, :status=>:done, :result=>"so fancy"} # => "so fancy" FancyService.new(fanciness: 8).do_something(force: false) # I, [2017-04-04T19:49:10.485462 #29957] INFO -- : {:method=>:do_something, :values=>{:fancy?=>false, :force=>false, :fanciness=>8}, :status=>:starting} # I, [2017-04-04T19:49:10.485596 #29957] INFO -- : {:method=>:do_something, :values=>{:fancy?=>false, :force=>false, :fanciness=>8}, :status=>:done, :result=>"so plain"} => "so plain"
Constants
- VERSION
Public Class Methods
included(informed_upon_class)
click to toggle source
Mixes in the DSL
to classes which include {Informed}. Defines a `logger` method which delegates to {Informed.logger} if the object doesn't respond to logger already. @returns nil
# File lib/informed.rb, line 60 def self.included(informed_upon_class) informed_upon_class.extend(DSL) unless informed_upon_class.method_defined?(:logger) define_method(:logger) do Informed.logger end end end
logger()
click to toggle source
@return [Logger] The configured logger. If a logger isn't set, creates one that logs
to STDOUT
# File lib/informed.rb, line 72 def self.logger @logger ||= Logger.new(STDOUT) end
logger=(logger)
click to toggle source
Sets the global {Informed.logger} to whatever logger you desire. @param logger [Logger] An object that responds to debug, info, warn, error, fatal and unkonwn @return [Logger] Returns what it's given.
# File lib/informed.rb, line 79 def self.logger=(logger) @logger = logger end