module Noddy

Constants

COLOUR_DEFAULT
CRITICAL
DEBUG
DEFAULT_LEVEL
ERROR
FILE
INFO
OUTPUTS_DEFAULT
TIMESTAMP_DEFAULT
VERSION
WARNING

Public Class Methods

colour=( colour ) click to toggle source
# File lib/noddy.rb, line 32
def colour=( colour )
  @colour = colour
end
critical( msg ) click to toggle source
# File lib/noddy.rb, line 23
def critical( msg )
  log_message( msg, CRITICAL )
end
debug( msg ) click to toggle source
# File lib/noddy.rb, line 7
def debug( msg )
  log_message( msg, DEBUG )
end
error( msg ) click to toggle source
# File lib/noddy.rb, line 19
def error( msg )
  log_message( msg, ERROR )
end
info( msg ) click to toggle source
# File lib/noddy.rb, line 11
def info( msg )
  log_message( msg, INFO )
end
log_level=( level ) click to toggle source
# File lib/noddy.rb, line 28
def log_level=( level )
  @level = level
end
outputs=( outputs = [] ) click to toggle source
# File lib/noddy.rb, line 40
def outputs=( outputs = [] )
  @outputs = outputs
end
timestamp=( timestamp ) click to toggle source
# File lib/noddy.rb, line 36
def timestamp=( timestamp )
  @timestamp = timestamp
end
warning( msg ) click to toggle source
# File lib/noddy.rb, line 15
def warning( msg )
  log_message( msg, WARNING )
end

Private Class Methods

log_message( msg, level ) click to toggle source
# File lib/noddy.rb, line 45
def log_message( msg, level )
  outputs = @outputs || OUTPUTS_DEFAULT

  msg.timestamp! if @timestamp || TIMESTAMP_DEFAULT

  outputs.each do |output|
    case output
    when STDOUT
      if @colour || COLOUR_DEFAULT
        STDOUT.puts msg.colour( level ) if level <= (@level || DEFAULT_LEVEL )
      else
        STDOUT.puts msg if level <= (@level || DEFAULT_LEVEL )
      end
    when STDERR
      if @colour || COLOUR_DEFAULT
        STDERR.puts msg.colour( level ) if level <= (@level || DEFAULT_LEVEL )
      else
        STDERR.puts msg if level <= (@level || DEFAULT_LEVEL )
      end
    when String
      write_log_file( output, msg, level )
    else
      raise "Unknow output type of class #{output.class}"
    end
  end
end
write_log_file( output, msg, level ) click to toggle source
# File lib/noddy.rb, line 72
def write_log_file( output, msg, level )
  log_dir = File.dirname output
  raise "Log file directory #{log_dir} does not exist" unless Dir.exist? log_dir

  begin
    File.open(output, 'a', 0644) do |f|
      f.flock(File::LOCK_EX)
      f.write msg + "\n"
      f.flush
    end
  rescue Errno::EACCES => e
    raise "Permissioned denided writing to #{output}"
  end
end