34 std::unique_lock<std::mutex> lock(
mutex_);
35 (std::cout << line).flush();
49 std::unique_lock<std::mutex> lock(
mutex_);
50 (std::cerr << line).flush();
94 (*s_logger_output_hook).append_log_line(
oss_.str());
105 (*s_logger_output_hook).append_log_line(
oss_.str());
129 oss_.str(std::string());
default output logger to cerr
void append_log_line(const std::string &line) final
method the receive log lines
std::mutex mutex_
the global mutex of logger and spacing logger
default output logger to cout
void append_log_line(const std::string &line) final
method the receive log lines
std::mutex mutex_
the global mutex of logger and spacing logger
void append_log_line(const std::string &line) final
method the receive log lines
std::string get()
return transcript of log
LoggerOutputHook * next_
previous logger, will be restored by destructor
void clear()
clear transcript
std::ostringstream oss_
string stream collecting
bool echo_
whether to echo each line to next logger output
LoggerCollectOutput(bool echo=false)
Abstract class to implement output hooks for logging.
virtual void append_log_line(const std::string &line)=0
method the receive log lines
virtual ~LoggerOutputHook()
virtual destructor
Abstract class to implement prefix output hooks for logging.
virtual void add_log_prefix(std::ostream &os)=0
method to add prefix to log lines
virtual ~LoggerPrefixHook()
virtual destructor
~Logger()
destructor: output a newline
Logger()
construction: add prefix if desired
std::ostringstream oss_
collector stream
SpacingLogger()
construction: add prefix if desired
~SpacingLogger()
destructor: output a newline
std::ostringstream oss_
collector stream
static std::atomic< LoggerOutputHook * > s_logger_output_hook
global logger output hook
static DefaultLoggerOutputCErr s_default_logger_cerr
default logger singletons
LoggerOutputHook * set_logger_output_hook(LoggerOutputHook *hook)
set new LoggerOutputHook instance to receive global log lines.
static DefaultLoggerOutputCOut s_default_logger_cout
default logger singletons
LoggerPrefixHook * set_logger_prefix_hook(LoggerPrefixHook *hook)
Set new LoggerPrefixHook instance to prefix global log lines.
LoggerOutputHook * set_logger_to_stderr()
install default logger to cerr / stderr instead of stdout.
static std::atomic< LoggerPrefixHook * > s_logger_prefix_hook
global logger prefix hook