blob: 53af26be9c56e79f17026e9a6f2a2c8450a19f62 (
plain) (
tree)
|
|
#pragma once
#include <library/cpp/logger/priority.h>
#include <util/generic/ptr.h>
namespace NGrpc {
class TLogger: public TThrRefBase {
protected:
TLogger() = default;
public:
[[nodiscard]]
bool IsEnabled(ELogPriority priority) const noexcept {
return DoIsEnabled(priority);
}
void Y_PRINTF_FORMAT(3, 4) Write(ELogPriority priority, const char* format, ...) noexcept {
va_list args;
va_start(args, format);
DoWrite(priority, format, args);
va_end(args);
}
protected:
virtual bool DoIsEnabled(ELogPriority priority) const noexcept = 0;
virtual void DoWrite(ELogPriority p, const char* format, va_list args) noexcept = 0;
};
using TLoggerPtr = TIntrusivePtr<TLogger>;
#define GRPC_LOG_DEBUG(logger, format, ...) \
if (logger && logger->IsEnabled(ELogPriority::TLOG_DEBUG)) { \
logger->Write(ELogPriority::TLOG_DEBUG, format, __VA_ARGS__); \
} else { }
#define GRPC_LOG_INFO(logger, format, ...) \
if (logger && logger->IsEnabled(ELogPriority::TLOG_INFO)) { \
logger->Write(ELogPriority::TLOG_INFO, format, __VA_ARGS__); \
} else { }
} // namespace NGrpc
|