class Logzomg::Logger
Constants
- LEVELS
TODO change this to proper file path
- UnsupportedLevel
- UnsupportedType
Attributes
log_path[RW]
Public Class Methods
new(**args) { |self| ... }
click to toggle source
# File lib/logzomg.rb, line 14 def initialize(**args, &block) @log_path = get_log_path @level = args[:level] ? args[:level] : "warning" @formatter = args[:formatter] ? args[:formatter] : TextFormatter.new {|f| f.with_color = true} if block_given? yield(self) return end end
Public Instance Methods
level(level)
click to toggle source
Sets the log level
# File lib/logzomg.rb, line 35 def level(level) raise UnsupportedLevel, "Level " + level + " is not a valid level" unless valid_level?(level) @level = level self end
log(hash)
click to toggle source
First set level -> Format message -> Write message to file
# File lib/logzomg.rb, line 27 def log(hash) raise UnsupportedType, "Must be of type Hash" unless valid_hash?(hash) level(hash[:level]) if hash.has_key?(:level) # Use default if not included msg = @formatter.format_msg(hash, @level) write(hash, msg) end
test()
click to toggle source
REMOVE AFTER DONE CODING
# File lib/logzomg.rb, line 42 def test self.log({ msg: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ipsum dui, luctus ac velit nec, imperdiet elementum turpis." + "Pellentesque velit tellus, ultricies non mauris at, semper rhoncus enim. Duis blandit arcu aliquam, sollicitudin leo quis, feugiat orci." + "Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed et tortor vel lectus convallis posuere ac vel lacus." + "Praesent vestibulum cursus ipsum vel elementum. Fusce elit enim, sollicitudin id sem consequat, molestie accumsan mi. Aliquam vehicula urna tortor," + "sit amet laoreet lacus pulvinar eu. Ut imperdiet vitae neque eu consectetur. Nam ac lacus finibus, fringilla neque ac, maximus ligula. Duis ullamcorper," + "felis sit amet luctus vehicula, sapien est dictum lorem, nec blandit nunc mi id enim. Curabitur quis laoreet erat. Maecenas varius cursus blandit." + "felis sit amet luctus vehicula, sapien est dictum lorem, nec blandit nunc mi id enim. Curabitur quis laoreet erat. Maecenas varius cursus blandit." + "felis sit amet luctus vehicula, sapien est dictum lorem, nec blandit nunc mi id enim. Curabitur quis laoreet erat. Maecenas varius cursus blandit." + "felis sit amet luctus vehicunec blandit nunc mi id enim. Curabitur quis laoreet erat. Maecenas varius cursus blandit." + "felis sit amet luctus vehicula, sapien est dictum lorem, nec blandit nunc mi id enim. Curabitur quis laoreet erat. Maecenas varius cursus blandit." + "felis sit amet luctus vehicula, sapien est ditur quis laoreet erat. Maecenas varius cursus blandit." + "felis sit amet luctus vehicula, sapien est dictum lorem, nec blandit nunc mi id enim. Curabitur quis laoreet erat. Maecenas varius cursus blandit." + "felis sit amet luctus vehicula, sapien est dictum lorem, nec blandit nunc mi id enim. Curabitur quis laoreet erat. Maecenas varius cursus blandit." + "felis sit amet luctus vehicula, sapien est dictum lorem, nec blandit nunc mi id enim. Curabitur quis laoreet erat. Maecenas varius cursus blandit." + "felis sit amet luctus vehicula, sapien est dictum lorem, nec blandit nunc mi id enim. Curabitur quis laoreet erat. Maecenas varius cursus blandit." + "felis sit amet luctus vehicula, sapien est dictum lorem, nec blandit nunc mi id enim. Curabitur quis laoreet erat. Maecenas varius cursus blandit." + "Aliquam eleifend mauris ut nisl mollis, quis placerat nisi bibendum.", long: true, what: true, bugged: false, nigga: "what", level: "debug" }) self.log({ msg: "This is very long This is very long This is very long This is very long This is very long This is very long This is very long This is very long This is very long This is very long This is very long This is very long This is very long ", long: true, what: true, bugged: false, nigga: "what", level: "debug" }) self.log({ msg: "Something is on the horizon!", spotted: "unknown", level: "debug" }) self.log({ number: 3, entity: "Acro-yoga enthusiasts", wild: true, msg: "Something has been spotted!", damn: "son", damn2: "son", damn3: "son", object: Object.new, damn4: "son", damn5: "son", level: "info" }) self.log({ msg: "They are coming closer!", speed: "5km/t", level: "warning" }) self.log({ msg: "I don't know how to handle them!!", omg: true, level: "error" }) self.log({ dead: true, msg: "You have died", level: "fatal" }) end
Private Instance Methods
get_log_path()
click to toggle source
# File lib/logzomg.rb, line 128 def get_log_path if defined?(Rails) File.expand_path(Rails.root.to_s + '/log/') else File.expand_path('log/') end end
valid_hash?(hash)
click to toggle source
Checks if message is hash
# File lib/logzomg.rb, line 119 def valid_hash?(hash) return hash.is_a?(Hash) end
valid_level?(level)
click to toggle source
Checks if the level value is valid (part of LEVELS
)
# File lib/logzomg.rb, line 124 def valid_level?(level) return !level.nil? && LEVELS.any? { |l| l == level.downcase } end
write(hash, msg)
click to toggle source
Writes the log message to the logfile If given one in hash use that
# File lib/logzomg.rb, line 113 def write(hash, msg) file = hash.has_key?(:file) ? "/" + hash[:file] : '/log.txt' File.open(@log_path + file, 'a') {|f| f.write(msg) } end