Usage
Quickstart
#include "quill/Quill.h"
int main()
{
// optional configuration before calling quill::start()
quill::Config cfg;
cfg.enable_console_colours = true;
quill::configure(cfg);
// starts the logging thread
quill::start();
// creates a logger
quill::Logger* logger = quill::get_logger("my_logger");
// log
LOG_DEBUG(logger, "Debugging foo {}", 1234);
LOG_INFO(logger, "Welcome to Quill!");
LOG_WARNING(logger, "A warning message.");
LOG_ERROR(logger, "An error message. error code {}", 123);
LOG_CRITICAL(logger, "A critical error.");
}
Single logger object
// When QUILL_ROOT_LOGGER_ONLY is defined then only a single root logger object is used
#define QUILL_ROOT_LOGGER_ONLY
#include "quill/Quill.h"
int main()
{
// quill::Handler* handler = quill::stdout_handler(); /** for stdout **/
quill::Handler* handler = quill::file_handler("quickstart.log", "w");
handler->set_pattern("%(ascii_time) [%(thread)] %(fileline:<28) LOG_%(level_name) %(message)");
// set configuration
quill::Config cfg;
cfg.default_handlers.push_back(handler);
// Apply configuration and start the backend worker thread
quill::configure(cfg);
quill::start();
LOG_INFO("Hello {}", "world");
LOG_ERROR("This is a log error example {}", 7);
}
Log to file
#include "quill/Quill.h"
int main()
{
quill::Handler* handler = quill::file_handler("quickstart.log", "w");
handler->set_pattern("%(ascii_time) [%(thread)] %(fileline:<28) %(level_name) %(logger_name:<12) %(message)");
// set configuration
quill::Config cfg;
cfg.default_handlers.push_back(handler);
// Apply configuration and start the backend worker thread
quill::configure(cfg);
quill::start();
auto my_logger = quill::create_logger("mylogger");
my_logger->set_log_level(quill::LogLevel::Debug);
LOG_INFO(my_logger, "Hello {}", "world");
LOG_ERROR(my_logger, "This is a log error example {}", 7);
}