tls_backend.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "tls_backend.h"
  2. #include <util/system/tls.h>
  3. namespace NYql {
  4. namespace NLog {
  5. namespace {
  6. Y_POD_STATIC_THREAD(TLogBackend*) CurrentBackend;
  7. } // namspace
  8. TLogBackend* SetLogBackendForCurrentThread(TLogBackend* backend) {
  9. TLogBackend* prev = *(&CurrentBackend);
  10. *(&CurrentBackend) = backend;
  11. return prev;
  12. }
  13. void TTlsLogBackend::WriteData(const TLogRecord& rec) {
  14. TLogBackend* backend = *(&CurrentBackend);
  15. if (backend) {
  16. backend->WriteData(rec);
  17. } else {
  18. DefaultBackend_->WriteData(rec);
  19. }
  20. }
  21. void TTlsLogBackend::ReopenLog() {
  22. TLogBackend* backend = *(&CurrentBackend);
  23. if (backend) {
  24. backend->ReopenLog();
  25. } else {
  26. DefaultBackend_->ReopenLog();
  27. }
  28. }
  29. ELogPriority TTlsLogBackend::FiltrationLevel() const {
  30. TLogBackend* backend = *(&CurrentBackend);
  31. if (backend) {
  32. return backend->FiltrationLevel();
  33. } else {
  34. return DefaultBackend_->FiltrationLevel();
  35. }
  36. return LOG_MAX_PRIORITY;
  37. }
  38. } // namspace NLog
  39. } // namspace NYql