We want to avoid synchronization overhead when checking if a log message is enabled. Most of the time, most messages will be disabled, so incurring the locking overhead on each message would be too expensive and would discourage developers from creating logs. Furthermore, missing a few messages while the change of state "propagates" to other threads does not affect the correctness of the program.
Note that memory_order_relaxed does not provide a compiler barrier either, so in theory stores into the atomic could be reordered by the optimizer. We have no reason to worry about that because all the writes are done inside a critical section protected by a mutex. The compiler cannot (or should not) reorder operations around those.
Returns
Type
Description
bool
is_enabled(Severity) const
Return true if severity is enabled.
We want to avoid synchronization overhead when checking if a log message is enabled. Most of the time, most messages will be disabled, so incurring the locking overhead on each message would be too expensive and would discourage developers from creating logs. Furthermore, missing a few messages while the change of state "propagates" to other threads does not affect the correctness of the program.
Note that memory_order_relaxed does not provide a compiler barrier either, so in theory stores into the atomic could be reordered by the optimizer. We have no reason to worry about that because all the writes are done inside a critical section protected by a mutex. The compiler cannot (or should not) reorder operations around those.
Parameter
Name
Description
severity
Severity
Returns
Type
Description
bool
set_minimum_severity(Severity)
Parameter
Name
Description
minimum
Severity
Returns
Type
Description
void
minimum_severity() const
Returns
Type
Description
Severity
AddBackend(std::shared_ptr< LogBackend >)
Parameter
Name
Description
backend
std::shared_ptr< LogBackend >
Returns
Type
Description
BackendId
RemoveBackend(BackendId)
Parameter
Name
Description
id
BackendId
Returns
Type
Description
void
ClearBackends()
Returns
Type
Description
void
BackendCount() const
Returns
Type
Description
std::size_t
Log(LogRecord)
Parameter
Name
Description
log_record
LogRecord
Returns
Type
Description
void
Flush()
Flush all the current backends.
Returns
Type
Description
void
static CompileTimeEnabled(Severity)
Return true if the severity is enabled at compile time.
Parameter
Name
Description
level
Severity
Returns
Type
Description
bool constexpr
static Instance()
Return the singleton instance for this application.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-03-05 UTC."],[[["This page provides documentation for the `LogSink` class in the Google Cloud C++ client library, with version 2.37.0-rc as the latest available version."],["The `LogSink` class is designed to receive log records and offers a variety of functions to manage logging, including adding and removing backends, setting minimum severity levels, and flushing current backends."],["Key functionalities of `LogSink` include checking if a message severity is enabled, determining if the object has any backends, and logging records via the `Log` function."],["The `LogSink` class can enable or disable `std::clog` logging, either programmatically or via an environment variable."],["The class includes static methods for retrieving the application's singleton instance of `LogSink` and for checking if a severity level is enabled at compile time."]]],[]]