stderr_logger.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // Copyright (c) Meta Platforms, Inc. and affiliates.
  2. //
  3. // This source code is licensed under both the GPLv2 (found in the
  4. // COPYING file in the root directory) and Apache 2.0 License
  5. // (found in the LICENSE.Apache file in the root directory).
  6. #pragma once
  7. #include <stdarg.h>
  8. #include <stdio.h>
  9. #include "rocksdb/env.h"
  10. namespace ROCKSDB_NAMESPACE {
  11. // Prints logs to stderr for faster debugging
  12. class StderrLogger : public Logger {
  13. public:
  14. explicit StderrLogger(const InfoLogLevel log_level = InfoLogLevel::INFO_LEVEL)
  15. : Logger(log_level), log_prefix(nullptr), log_prefix_len(0) {}
  16. explicit StderrLogger(const InfoLogLevel log_level, const std::string prefix)
  17. : Logger(log_level),
  18. log_prefix(strdup(prefix.c_str())),
  19. log_prefix_len(strlen(log_prefix)) {}
  20. ~StderrLogger() override;
  21. // Brings overloaded Logv()s into scope so they're not hidden when we override
  22. // a subset of them.
  23. using Logger::Logv;
  24. void Logv(const char* format, va_list ap) override;
  25. private:
  26. // This prefix will be appended after the time/thread info of every log
  27. const char* log_prefix;
  28. // The length of the log_prefix
  29. size_t log_prefix_len;
  30. };
  31. } // namespace ROCKSDB_NAMESPACE