formatter.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include <library/cpp/yt/string/raw_formatter.h>
  3. #include <library/cpp/yt/logging//logger.h>
  4. namespace NYT::NLogging {
  5. /////////////////////////////////////////////////////////////π///////////////////
  6. constexpr int DateTimeBufferSize = 64;
  7. constexpr int MessageBufferSize = 64_KB;
  8. void FormatMilliseconds(TBaseFormatter* out, TInstant dateTime);
  9. void FormatMicroseconds(TBaseFormatter* out, TInstant dateTime);
  10. void FormatLevel(TBaseFormatter* out, ELogLevel level);
  11. void FormatMessage(TBaseFormatter* out, TStringBuf message);
  12. /////////////////////////////////////////////////////////////π///////////////////
  13. class TCachingDateFormatter
  14. {
  15. public:
  16. void Format(TBaseFormatter* buffer, TInstant dateTime, bool printMicroseconds = false);
  17. private:
  18. ui64 CachedSecond_ = 0;
  19. TRawFormatter<DateTimeBufferSize> Cached_;
  20. };
  21. ////////////////////////////////////////////////////////////////////////////////
  22. class TPlainTextEventFormatter
  23. {
  24. public:
  25. explicit TPlainTextEventFormatter(bool enableSourceLocation);
  26. void Format(TBaseFormatter* buffer, const TLogEvent& event);
  27. private:
  28. const bool EnableSourceLocation_;
  29. TCachingDateFormatter CachingDateFormatter_;
  30. };
  31. ////////////////////////////////////////////////////////////////////////////////
  32. } // namespace NYT::NLogging