48 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "spdlog/sinks/file_sinks.h"
 | 
						|
#include "spdlog/sinks/stdout_sinks.h"
 | 
						|
#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;
 | 
						|
    }
 | 
						|
}
 |