Module: LogSwitch

Defined in:
lib/log_switch.rb,
lib/log_switch/version.rb

Overview

LogSwitch allows for extending a class/module with a logger and, most importantly, allows for turning off logging programmatically. See the README.rdoc for more info.

Constant Summary collapse

VERSION =
'0.2.0'

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#log(message, level = log_level) ⇒ Object

Logs a message using the level provided. If no level provided, use @log_level.

Parameters:

  • message (String)

    The message to log.

  • level (Symbol) (defaults to: log_level)

    The log level to send to your Logger.



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/log_switch.rb', line 49

def log(message, level=log_level)
  @before_block.call unless @before_block.nil?
  yield if block_given?

  if log?
    if message.respond_to? :each_line
      message.each_line { |line| logger.send level, line.chomp }
    else
      logger.send(level, message)
    end
  end
end

#log_levelSymbol

Returns The current default log level. Starts off as :debug.

Returns:

  • (Symbol)

    The current default log level. Starts off as :debug.



29
30
31
# File 'lib/log_switch.rb', line 29

def log_level
  @log_level ||= :debug
end

#loggerObject

Defaults to a Logger writing to STDOUT.



21
22
23
# File 'lib/log_switch.rb', line 21

def logger
  @logger ||= ::Logger.new STDOUT
end

Instance Method Details

#before(&block) ⇒ Object

#log calls the block given to this method before it logs every time. This, thus, acts as a hook in the case where you want to make sure some code gets executed before you log a message. Useful for making sure a file exists before logging to it.

Parameters:

  • block (Proc)

    The block of code to execute before logging a message with #log.



40
41
42
# File 'lib/log_switch.rb', line 40

def before(&block)
  @before_block = block
end

#log?Boolean

Tells whether logging is turned on or not.

Returns:

  • (Boolean)


13
14
15
# File 'lib/log_switch.rb', line 13

def log?
  @log != false
end

#reset_config!Object

Sets back to defaults.



63
64
65
66
67
# File 'lib/log_switch.rb', line 63

def reset_config!
  self.log = true
  self.logger = ::Logger.new STDOUT
  self.log_level = :debug
end