event_logger.cc 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
  2. // This source code is licensed under both the GPLv2 (found in the
  3. // COPYING file in the root directory) and Apache 2.0 License
  4. // (found in the LICENSE.Apache file in the root directory).
  5. #include "logging/event_logger.h"
  6. #include <cassert>
  7. #include <cinttypes>
  8. #include <sstream>
  9. #include <string>
  10. #include "util/string_util.h"
  11. namespace ROCKSDB_NAMESPACE {
  12. EventLoggerStream::EventLoggerStream(Logger* logger)
  13. : logger_(logger),
  14. log_buffer_(nullptr),
  15. max_log_size_(0),
  16. json_writer_(nullptr) {}
  17. EventLoggerStream::EventLoggerStream(LogBuffer* log_buffer,
  18. const size_t max_log_size)
  19. : logger_(nullptr),
  20. log_buffer_(log_buffer),
  21. max_log_size_(max_log_size),
  22. json_writer_(nullptr) {}
  23. EventLoggerStream::~EventLoggerStream() {
  24. if (json_writer_) {
  25. json_writer_->EndObject();
  26. #ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
  27. printf("%s\n", json_writer_->Get().c_str());
  28. #else
  29. if (logger_) {
  30. EventLogger::Log(logger_, *json_writer_);
  31. } else if (log_buffer_) {
  32. assert(max_log_size_);
  33. EventLogger::LogToBuffer(log_buffer_, *json_writer_, max_log_size_);
  34. }
  35. #endif
  36. delete json_writer_;
  37. }
  38. }
  39. void EventLogger::Log(const JSONWriter& jwriter) { Log(logger_, jwriter); }
  40. void EventLogger::Log(Logger* logger, const JSONWriter& jwriter) {
  41. #ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
  42. printf("%s\n", jwriter.Get().c_str());
  43. #else
  44. ROCKSDB_NAMESPACE::Log(logger, "%s %s", Prefix(), jwriter.Get().c_str());
  45. #endif
  46. }
  47. void EventLogger::LogToBuffer(LogBuffer* log_buffer, const JSONWriter& jwriter,
  48. const size_t max_log_size) {
  49. #ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
  50. printf("%s\n", jwriter.Get().c_str());
  51. #else
  52. assert(log_buffer);
  53. ROCKSDB_NAMESPACE::LogToBuffer(log_buffer, max_log_size, "%s %s", Prefix(),
  54. jwriter.Get().c_str());
  55. #endif
  56. }
  57. } // namespace ROCKSDB_NAMESPACE