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