clayborg added a comment.

The main questions is if we want --buffered for any log channel (file, 
callback, or circular). If we add a --circular flag, then we just let things 
accumulate in the LogHandler class.

The idea would be to add more stuff to the LogHandler base class to support 
this:

class LogHandler {

  bool m_circular = false; // If true, never flush unless "log dump" is called.
  size_t m_buffer_size = 0;
  // If m_buffer_size > 0 then store messages in m_buffer until size is 
exceeded, then flush.
  std::string m_buffer; 

};

Then we don't need "RotatingLogHandler", and then "log dump" can dump to the 
callback or to the file. So when the buffer is full, we flush to the virtual 
Emit(...) call. Just adds some extra logic to the LogHandler class' Emit(...) 
method to take care of the buffering.



================
Comment at: lldb/source/Commands/CommandObjectLog.cpp:166-169
+    if (m_options.log_file && m_options.buffer_size.OptionWasSet()) {
+      result.AppendError("cannot specify both a file and buffer size.");
+      return false;
+    }
----------------
Can't we build buffer size into a file based LogHandler? Have a std::string 
inside LogHandler and append to it until the bytes left + latest Emit() message 
go over the buffer size and then flush then? 


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127986/new/

https://reviews.llvm.org/D127986

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to