mirror of
https://github.com/gabime/spdlog.git
synced 2024-11-15 08:25:43 +08:00
added example
This commit is contained in:
parent
b67076fc85
commit
d79af47a28
1
.gitignore
vendored
1
.gitignore
vendored
@ -45,6 +45,7 @@ example/*
|
||||
!example/example.sln
|
||||
!example/example.vcxproj
|
||||
!example/CMakeLists.txt
|
||||
!example/multisink.cpp
|
||||
|
||||
# generated files
|
||||
generated
|
||||
|
47
example/multisink.cpp
Normal file
47
example/multisink.cpp
Normal file
@ -0,0 +1,47 @@
|
||||
#include "spdlog/spdlog.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
|
||||
namespace spd = spdlog;
|
||||
int main(int, char*[])
|
||||
{
|
||||
bool enable_debug = true;
|
||||
try
|
||||
{
|
||||
// This other example use a single logger with multiple sinks.
|
||||
// This means that the same log_msg is forwarded to multiple sinks;
|
||||
// Each sink can have it's own log level and a message will be logged.
|
||||
std::vector<spdlog::sink_ptr> sinks;
|
||||
sinks.push_back( std::make_shared<spdlog::sinks::stdout_sink_mt>() );
|
||||
sinks.push_back( std::make_shared<spdlog::sinks::simple_file_sink_mt>("./log_regular_file.txt") );
|
||||
sinks.push_back( std::make_shared<spdlog::sinks::simple_file_sink_mt>("./log_debug_file.txt") );
|
||||
|
||||
spdlog::logger console_multisink("multisink", sinks.begin(), sinks.end() );
|
||||
console_multisink.set_level( spdlog::level::warn);
|
||||
|
||||
sinks[0]->set_level( spdlog::level::trace); // console. Allow everything. Default value
|
||||
sinks[1]->set_level( spdlog::level::trace); // regular file. Allow everything. Default value
|
||||
sinks[2]->set_level( spdlog::level::off); // regular file. Ignore everything.
|
||||
|
||||
console_multisink.warn("warn: will print only on console and regular file");
|
||||
|
||||
if( enable_debug )
|
||||
{
|
||||
console_multisink.set_level( spdlog::level::debug); // level of the logger
|
||||
sinks[1]->set_level( spdlog::level::debug); // regular file
|
||||
sinks[2]->set_level( spdlog::level::debug); // debug file
|
||||
}
|
||||
console_multisink.debug("Debug: you should see this on console and both files");
|
||||
|
||||
// Release and close all loggers
|
||||
spdlog::drop_all();
|
||||
}
|
||||
// Exceptions will only be thrown upon failed logger or sink construction (not during logging)
|
||||
catch (const spd::spdlog_ex& ex)
|
||||
{
|
||||
std::cout << "Log init failed: " << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user