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