Skip to content
Gabi Melman edited this page Oct 27, 2018 · 51 revisions

By default spdlog lets the underlying libc flush whenever it sees fit in order to achieve good performance. You can override this using the following options:

Manual flush

You can use the logger->flush() function to instruct a logger to flush its contents. The logger will in turn call the flush() function on each of the underlying sinks.

Important: logger->flush() is always a synchronous operation, even if the logger is in async mode! In fact, in async mode it might take a long time since spdlog will first wait for the queue to drain before flushing.

Severity based flush

You can set the minimum log level that will trigger automatic flush.

For example, this will trigger flush whenever errors or more severe messages are logged:

my_logger->flush_on(spdlog::level::err); 

Interval based flush

spdlg supports setting flush interval.

For example, turn on periodic flush with interval of 5 seconds for all registered loggers:

spdlog::flush_every(std::chrono::seconds(5));

Or for a given logger:

logger->flush_every(std::chrono::seconds(5));

Note Use this only on thread safe loggers, since the periodic flush happens from a different thread.