20void SetDefaultLoggerRef(LoggerRef new_logger)
noexcept;
22extern bool has_background_threads_which_can_log;
33LoggerRef GetDefaultLogger()
noexcept;
38class DefaultLoggerGuard
final {
45 explicit DefaultLoggerGuard(LoggerPtr new_default_logger)
noexcept;
47 DefaultLoggerGuard(DefaultLoggerGuard&&) =
delete;
48 DefaultLoggerGuard& operator=(DefaultLoggerGuard&&) =
delete;
50 ~DefaultLoggerGuard();
53 LoggerRef logger_prev_;
54 const Level level_prev_;
55 LoggerPtr logger_new_;
65class DefaultLoggerLevelScope
final {
67 explicit DefaultLoggerLevelScope(logging::
Level level);
69 DefaultLoggerLevelScope(DefaultLoggerLevelScope&&) =
delete;
70 DefaultLoggerLevelScope& operator=(DefaultLoggerLevelScope&&) =
delete;
72 ~DefaultLoggerLevelScope();
75 impl::LoggerBase& logger_;
76 const Level level_initial_;
81void SetDefaultLoggerLevel(
Level);
84Level GetDefaultLoggerLevel()
noexcept;
88bool ShouldLog(
Level level)
noexcept;
91void SetLoggerLevel(LoggerRef,
Level);
93bool LoggerShouldLog(LoggerRef logger,
Level level)
noexcept;
95bool LoggerShouldLog(
const LoggerPtr& logger,
Level level)
noexcept;
97Level GetLoggerLevel(LoggerRef logger)
noexcept;
103void LogFlush(LoggerRef logger);
110 uint64_t count_since_reset = 0;
111 uint64_t dropped_count = 0;
112 std::chrono::steady_clock::time_point last_reset_time{};
118 explicit RateLimiter(RateLimitData& data)
noexcept;
119 bool ShouldLog()
const noexcept {
return should_log_; }
120 auto GetDroppedCount()
const noexcept {
return dropped_count_; }
121 friend LogHelper& operator<<(LogHelper& lh,
const RateLimiter& rl)
noexcept;
124 bool should_log_{
true};
125 uint64_t dropped_count_{0};
129class StaticLogEntry
final {
131 StaticLogEntry(
const char* path,
int line)
noexcept;
133 StaticLogEntry(StaticLogEntry&&) =
delete;
134 StaticLogEntry& operator=(StaticLogEntry&&) =
delete;
136 bool ShouldNotLog(LoggerRef logger,
Level level)
const noexcept;
137 bool ShouldNotLog(
const LoggerPtr& logger,
Level level)
const noexcept;
140 static constexpr std::size_t kContentSize =
compiler::SelectSize().For64Bit(40).For32Bit(24);
142 alignas(
void*) std::byte content_[kContentSize];
145template <
class NameHolder,
int Line>
146struct EntryStorage
final {
147 static inline StaticLogEntry entry{NameHolder::Get(), Line};