# File lib/lumberjack/logger.rb, line 98
    def add(severity, message = nil, progname = nil)
      severity = Severity.label_to_level(severity) if severity.is_a?(String) || severity.is_a?(Symbol)
      if severity && severity >= level
        time = Time.now
        message = yield if message.nil? && block_given?
        message = @formatter.format(message)
        entry = LogEntry.new(time, severity, message, progname || self.progname, $$, Lumberjack.unit_of_work_id)
        begin
          device.write(entry)
        rescue => e
          $stderr.puts("#{e.class.name}: #{e.message}#{' at ' + e.backtrace.first if e.backtrace}")
          $stderr.puts(entry.to_s)
        end
      end
      nil
    end