def auto_flush(message = nil)
      # Write the auto_event with the current message (if any) to the
      # auto_flushing Flows
      flows.auto_flush { auto_event(message) }

      if !buffering? && pending?
        flows.flush { event }
        clear
      end
    end
def auto_flush(message = nil)
      # Write the auto_event with the current message (if any) to the
      # auto_flushing Flows
      flows.auto_flush { auto_event(message) }

      if !buffering? && pending?
        flows.flush { event }
        clear
      end
    end
Write the data contained in this Buffer to interested {Flow} objects.

 This method is called after adding new data to the Buffer. Here, we write
 the newly added data to the flows, depending on their type:

 Flows with enabled `auto_flush?` will receive an event Hash containing all
 of the current Buffer's fields and tags but only the single currently
 logged message (if any). This happens regardless of whether the current
 Buffer is {#buffering?} or not.

 In addition to that, if the current Buffer is not {buffering?}, we write
 pending data to "normal" flows and {#clear} the Buffer afterwards. Such a
 buffer thus acts like a regular old Logger would: it just flushes a logged
 message to its log device as soon as it is added.

 Buffering Buffers are not automatically flushed to "normal" flows here.
 They need to be explicitly flushed with {Buffer#flush} in order for their
 buffered data to be written to the normal flows.

 @param message [Message, nil] The currently logged message which is added
   to the {#auto_event}. If kept empty (i.e. with `nil`), we do not
   add any messages.
 @return [void]