================ @@ -9,44 +9,66 @@ #ifndef LLDB_TOOLS_LLDB_DAP_DAPLOG_H #define LLDB_TOOLS_LLDB_DAP_DAPLOG_H +#include "llvm/ADT/StringRef.h" #include "llvm/Support/Error.h" #include "llvm/Support/FormatAdapters.h" #include "llvm/Support/FormatVariadic.h" #include <chrono> #include <fstream> +#include <mutex> #include <string> // Write a message to log, if logging is enabled. #define DAP_LOG(log, ...) \ do { \ - ::std::ofstream *log_private = (log); \ + ::lldb_dap::Log *log_private = (log); \ if (log_private) { \ ::std::chrono::duration<double> now{ \ ::std::chrono::system_clock::now().time_since_epoch()}; \ - *log_private << ::llvm::formatv("{0:f9} ", now.count()).str() \ - << ::llvm::formatv(__VA_ARGS__).str() << std::endl; \ + ::std::string out; \ + ::llvm::raw_string_ostream os(out); \ + os << ::llvm::formatv("{0:f9} ", now.count()).str() \ + << ::llvm::formatv(__VA_ARGS__).str() << "\n"; \ + log_private->WriteMessage(out); \ } \ } while (0) // Write message to log, if error is set. In the log message refer to the error // with {0}. Error is cleared regardless of whether logging is enabled. #define DAP_LOG_ERROR(log, error, ...) \ do { \ - ::std::ofstream *log_private = (log); \ + ::lldb_dap::Log *log_private = (log); \ ::llvm::Error error_private = (error); \ if (log_private && error_private) { \ ::std::chrono::duration<double> now{ \ std::chrono::system_clock::now().time_since_epoch()}; \ - *log_private << ::llvm::formatv("{0:f9} ", now.count()).str() \ - << ::lldb_dap::FormatError(::std::move(error_private), \ - __VA_ARGS__) \ - << std::endl; \ + ::std::string out; \ + ::llvm::raw_string_ostream os(out); \ + os << ::llvm::formatv("{0:f9} ", now.count()).str() \ + << ::lldb_dap::FormatError(::std::move(error_private), __VA_ARGS__) \ + << "\n"; \ + log_private->WriteMessage(out); \ ---------------- JDevlieghere wrote:
I'd move all this out of the macro and into `Log::WriteMessage`. https://github.com/llvm/llvm-project/pull/131916 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits