def log(log, message = nil, progname = nil, &block)
      # Compatibility with ::Logger
      return add(log, message, progname, &block) unless log.is_a?(SemanticLogger::Log)

      Logger.call_subscribers(log)

      Logger.processor.log(log)
    end
def log(log, message = nil, progname = nil, &block)
      # Compatibility with ::Logger
      return add(log, message, progname, &block) unless log.is_a?(SemanticLogger::Log)

      Logger.call_subscribers(log)

      Logger.processor.log(log)
    end
Returns a Logger instance

 Return the logger for a specific class, supports class specific log levels
   logger = SemanticLogger::Logger.new(self)
 OR
   logger = SemanticLogger::Logger.new('MyClass')

 Parameters:
  klass
    A class, module or a string with the application/class name
    to be used in the logger

  level
    The initial log level to start with for this logger instance
    Default: SemanticLogger.default_level

  filter [Regexp|Proc]
    RegExp: Only include log messages where the class name matches the supplied
    regular expression. All other messages will be ignored
    Proc: Only include log messages where the supplied Proc returns true
          The Proc must return true or false
 Place log request on the queue for the Appender thread to write to each
 appender in the order that they were registered

 Subscribers are called inline before handing off to the queue so that
 they can capture additional context information as needed.