mirror of
https://github.com/gabime/spdlog.git
synced 2025-09-29 09:59:33 +08:00
New async_logger class and API
This commit is contained in:
@@ -31,8 +31,8 @@
|
||||
#include <thread>
|
||||
#include <atomic>
|
||||
#include "spdlog/spdlog.h"
|
||||
#include "spdlog/async_logger.h"
|
||||
#include "spdlog/sinks/file_sinks.h"
|
||||
#include "spdlog/sinks/async_sink.h"
|
||||
#include "spdlog/sinks/null_sink.h"
|
||||
#include "utils.h"
|
||||
|
||||
@@ -50,8 +50,8 @@ void bench_mt(int howmany, std::shared_ptr<spdlog::logger> log, int thread_count
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
|
||||
int howmany = 250000;
|
||||
int threads = 4;
|
||||
int howmany = 1000000;
|
||||
int threads = 10;
|
||||
int flush_interval = 1000;
|
||||
int file_size = 30 * 1024 * 1024;
|
||||
int rotating_files = 5;
|
||||
@@ -70,11 +70,8 @@ int main(int argc, char* argv[])
|
||||
|
||||
auto rotating_st = spdlog::rotating_logger_st("rotating_st", "logs/rotating_st", file_size, rotating_files, flush_interval);
|
||||
bench(howmany, rotating_st);
|
||||
|
||||
|
||||
auto daily_st = spdlog::daily_logger_st("daily_st", "logs/daily_st", flush_interval);
|
||||
bench(howmany, daily_st);
|
||||
|
||||
bench(howmany, spdlog::create<null_sink_st>("null_st"));
|
||||
|
||||
cout << "\n*******************************************************************************\n";
|
||||
@@ -87,8 +84,25 @@ int main(int argc, char* argv[])
|
||||
|
||||
auto daily_mt = spdlog::daily_logger_mt("daily_mt", "logs/daily_mt", flush_interval);
|
||||
bench_mt(howmany, daily_mt, threads);
|
||||
bench(howmany, spdlog::create<null_sink_st>("null_mt"));
|
||||
|
||||
|
||||
cout << "\n*******************************************************************************\n";
|
||||
cout << "async logging.. " << threads << " threads sharing same logger, " << format(howmany) << " iterations, flush every " << flush_interval << " lines" << endl;
|
||||
cout << "*******************************************************************************\n";
|
||||
|
||||
spdlog::set_async_mode(howmany);
|
||||
auto rotating_st_async = spdlog::rotating_logger_st("rotating_st_Async", "logs/rotating_st_async", file_size, rotating_files, flush_interval);
|
||||
bench(howmany, rotating_st_async);
|
||||
auto daily_st_async = spdlog::daily_logger_st("daily_st_async", "logs/daily_st_async", flush_interval);
|
||||
bench(howmany, daily_st_async);
|
||||
bench(howmany, spdlog::create<null_sink_st>("null_st_async"));
|
||||
|
||||
|
||||
spdlog::stop();
|
||||
cin.ignore();
|
||||
|
||||
|
||||
bench_mt(howmany, spdlog::create<null_sink_mt>("null_mt"), threads);
|
||||
}
|
||||
catch (std::exception &ex)
|
||||
{
|
||||
|
Reference in New Issue
Block a user