class BmcDaemonLib::Logger
Constants
- DEFAULT_FORMAT
Public Class Methods
new(filename, rotation = nil)
click to toggle source
Calls superclass method
# File lib/bmc-daemon-lib/logger.rb, line 17 def initialize filename, rotation = nil # Initialize super @format = DEFAULT_FORMAT # Import LOGGER_FORMAT if defined if (defined?'LOGGER_FORMAT') && (LOGGER_FORMAT.is_a? Hash) @format.merge! LOGGER_FORMAT end # Define formatter self.formatter = proc do |severity, datetime, progname, messages| formatter(severity, datetime, progname, messages) end end
Public Instance Methods
add(severity, message, context = nil, details = nil)
click to toggle source
def info message
add Logger::INFO, "INFO:#{message}"
end def debug message
add Logger::DEBUG, "DEBUG:#{message}"
end def error message
add Logger::ERROR, "ERROR:#{message}"
end
Calls superclass method
# File lib/bmc-daemon-lib/logger.rb, line 43 def add severity, message, context = nil, details = nil # Start from an empty messages list with the main message messages = [] messages << sprintf(@format[:text], message) if message # Add raw lines if context.nil? && (details.is_a? Array) messages = details # Add details from array elsif details.is_a? Array details.each do |line| messages << sprintf(@format[:array], line) end # Add details from hash elsif details.is_a?(Hash) || details.is_a?(Hashie::Mash) details.each do |key, value| messages << sprintf(@format[:hash], key, value) end # Add each line of "details" after split elsif details.is_a? String details.lines.each do |line| messages << line unless line.empty? end end # Pass all that stuff to my parent super severity, messages, context end
Protected Instance Methods
formatter(severity, datetime, context, messages)
click to toggle source
# File lib/bmc-daemon-lib/logger.rb, line 82 def formatter severity, datetime, context, messages # Build header with time and context header = @format[:header] % { time: datetime.strftime(@format[:time]), pid: Process.pid, severity: severity, pipe: self.progname, context: build_context(context) } # If we have a plain message, we're done return "#{header} #{trimmed(payload)}\n" unless messages.is_a?(Array) # If we have a bunch of lines, prefix them and send them together return messages.collect do |line| "#{header} #{trimmed(line)}\n" end.join end
trimmed(line)
click to toggle source
# File lib/bmc-daemon-lib/logger.rb, line 78 def trimmed line line.to_s.rstrip[0..@format[:trim].to_i].force_encoding(Encoding::UTF_8) end
Private Instance Methods
build_context(context)
click to toggle source
Builds prefix from @format and context
# File lib/bmc-daemon-lib/logger.rb, line 104 def build_context context # Skip if no format defined return unless @format[:context].is_a? Hash # Call the instance's method to get hash context return unless context.is_a? Hash # Build each context part return @format[:context].collect do |key, format| sprintf(format, context[key]) end.join rescue KeyError, ArgumentError => ex return "[context: #{ex.message}]" end