event_logger.cc 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 "logging/logging.h"
  11. #include "util/string_util.h"
  12. namespace ROCKSDB_NAMESPACE {
  13. EventLoggerStream::EventLoggerStream(Logger* logger)
  14. : logger_(logger),
  15. log_buffer_(nullptr),
  16. max_log_size_(0),
  17. json_writer_(nullptr) {}
  18. EventLoggerStream::EventLoggerStream(LogBuffer* log_buffer,
  19. const size_t max_log_size)
  20. : logger_(nullptr),
  21. log_buffer_(log_buffer),
  22. max_log_size_(max_log_size),
  23. json_writer_(nullptr) {}
  24. EventLoggerStream::~EventLoggerStream() {
  25. if (json_writer_) {
  26. json_writer_->EndObject();
  27. #ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
  28. printf("%s\n", json_writer_->Get().c_str());
  29. #else
  30. if (logger_) {
  31. EventLogger::Log(logger_, *json_writer_);
  32. } else if (log_buffer_) {
  33. assert(max_log_size_);
  34. EventLogger::LogToBuffer(log_buffer_, *json_writer_, max_log_size_);
  35. }
  36. #endif
  37. delete json_writer_;
  38. }
  39. }
  40. void EventLogger::Log(const JSONWriter& jwriter) {
  41. Log(logger_, jwriter);
  42. }
  43. void EventLogger::Log(Logger* logger, const JSONWriter& jwriter) {
  44. #ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
  45. printf("%s\n", jwriter.Get().c_str());
  46. #else
  47. ROCKSDB_NAMESPACE::Log(logger, "%s %s", Prefix(), jwriter.Get().c_str());
  48. #endif
  49. }
  50. void EventLogger::LogToBuffer(LogBuffer* log_buffer, const JSONWriter& jwriter,
  51. const size_t max_log_size) {
  52. #ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
  53. printf("%s\n", jwriter.Get().c_str());
  54. #else
  55. assert(log_buffer);
  56. ROCKSDB_NAMESPACE::LogToBuffer(log_buffer, max_log_size, "%s %s", Prefix(),
  57. jwriter.Get().c_str());
  58. #endif
  59. }
  60. } // namespace ROCKSDB_NAMESPACE