Commit 2f52c554 authored by gabime's avatar gabime

Removed create<..> function from spdlog.h

parent 48c8ce23
...@@ -21,20 +21,6 @@ ...@@ -21,20 +21,6 @@
namespace spdlog { namespace spdlog {
using default_factory = synchronous_factory;
// Create a logger with a templated sink type
// The logger's level, formatter and flush level will be set according the
// global settings.
//
// Example:
// spdlog::create<daily_file_sink_st>("logger_name", "dailylog_filename", 11, 59);
template<typename Sink, typename... SinkArgs>
inline std::shared_ptr<spdlog::logger> create(std::string logger_name, SinkArgs &&... sink_args)
{
return default_factory::create<Sink>(std::move(logger_name), std::forward<SinkArgs>(sink_args)...);
}
// API for using default logger (stdout_color_mt), // API for using default logger (stdout_color_mt),
// e.g: spdlog::info("Message {}", 1); // e.g: spdlog::info("Message {}", 1);
// //
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <string> #include <string>
#include <iomanip> #include <iomanip>
#include <stdlib.h> #include <stdlib.h>
#include <memory>
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG #define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG
......
...@@ -18,13 +18,14 @@ TEST_CASE("daily_logger with dateonly calculator", "[daily_logger]") ...@@ -18,13 +18,14 @@ TEST_CASE("daily_logger with dateonly calculator", "[daily_logger]")
fmt::format_to( fmt::format_to(
std::back_inserter(w), SPDLOG_FILENAME_T("{}_{:04d}-{:02d}-{:02d}"), basename, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); std::back_inserter(w), SPDLOG_FILENAME_T("{}_{:04d}-{:02d}-{:02d}"), basename, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
auto logger = spdlog::create<sink_type>("logger", basename, 0, 0); auto sink = std::make_shared<sink_type>(basename, 0, 0);
spdlog::logger logger("logger", sink);
for (int i = 0; i < 10; ++i) for (int i = 0; i < 10; ++i)
{ {
logger->info("Test message {}", i); logger.info("Test message {}", i);
} }
logger->flush(); logger.flush();
#ifdef SPDLOG_WCHAR_FILENAMES #ifdef SPDLOG_WCHAR_FILENAMES
spdlog::memory_buf_t buf; spdlog::memory_buf_t buf;
...@@ -60,13 +61,14 @@ TEST_CASE("daily_logger with custom calculator", "[daily_logger]") ...@@ -60,13 +61,14 @@ TEST_CASE("daily_logger with custom calculator", "[daily_logger]")
fmt::format_to( fmt::format_to(
std::back_inserter(w), SPDLOG_FILENAME_T("{}{:04d}{:02d}{:02d}"), basename, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); std::back_inserter(w), SPDLOG_FILENAME_T("{}{:04d}{:02d}{:02d}"), basename, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
auto logger = spdlog::create<sink_type>("logger", basename, 0, 0); auto sink = std::make_shared<sink_type>(basename, 0, 0);
spdlog::logger logger("logger", sink);
for (int i = 0; i < 10; ++i) for (int i = 0; i < 10; ++i)
{ {
logger->info("Test message {}", i); logger.info("Test message {}", i);
} }
logger->flush(); logger.flush();
#ifdef SPDLOG_WCHAR_FILENAMES #ifdef SPDLOG_WCHAR_FILENAMES
spdlog::memory_buf_t buf; spdlog::memory_buf_t buf;
...@@ -165,4 +167,4 @@ TEST_CASE("daily_logger rotate", "[daily_file_sink]") ...@@ -165,4 +167,4 @@ TEST_CASE("daily_logger rotate", "[daily_file_sink]")
test_rotate(days_to_run, 10, 10); test_rotate(days_to_run, 10, 10);
test_rotate(days_to_run, 11, 10); test_rotate(days_to_run, 11, 10);
test_rotate(days_to_run, 20, 10); test_rotate(days_to_run, 20, 10);
} }
\ No newline at end of file
...@@ -27,11 +27,13 @@ TEST_CASE("default_error_handler", "[errors]]") ...@@ -27,11 +27,13 @@ TEST_CASE("default_error_handler", "[errors]]")
prepare_logdir(); prepare_logdir();
spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG); spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG);
auto logger = spdlog::create<spdlog::sinks::basic_file_sink_mt>("test-error", filename, true);
logger->set_formatter(make_unique<spdlog::pattern_formatter>("%v")); auto sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(filename, true);
logger->info(fmt::runtime("Test message {} {}"), 1); spdlog::logger logger("test-error", std::move(sink));
logger->info("Test message {}", 2); logger.set_formatter(make_unique<spdlog::pattern_formatter>("%v"));
logger->flush(); logger.info(fmt::runtime("Test message {} {}"), 1);
logger.info("Test message {}", 2);
logger.flush();
using spdlog::details::os::default_eol; using spdlog::details::os::default_eol;
REQUIRE(file_contents(SIMPLE_LOG) == fmt::format("Test message 2{}", default_eol)); REQUIRE(file_contents(SIMPLE_LOG) == fmt::format("Test message 2{}", default_eol));
...@@ -44,7 +46,8 @@ TEST_CASE("custom_error_handler", "[errors]]") ...@@ -44,7 +46,8 @@ TEST_CASE("custom_error_handler", "[errors]]")
{ {
prepare_logdir(); prepare_logdir();
spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG); spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG);
auto logger = spdlog::create<spdlog::sinks::basic_file_sink_mt>("logger", filename, true); auto sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(filename, true);
auto logger = std::make_shared<spdlog::logger>("logger", std::move(sink));
logger->flush_on(spdlog::level::info); logger->flush_on(spdlog::level::info);
logger->set_error_handler([=](const std::string &) { throw custom_ex(); }); logger->set_error_handler([=](const std::string &) { throw custom_ex(); });
logger->info("Good message #1"); logger->info("Good message #1");
...@@ -56,16 +59,16 @@ TEST_CASE("custom_error_handler", "[errors]]") ...@@ -56,16 +59,16 @@ TEST_CASE("custom_error_handler", "[errors]]")
TEST_CASE("default_error_handler2", "[errors]]") TEST_CASE("default_error_handler2", "[errors]]")
{ {
auto logger = spdlog::create<failing_sink>("failed_logger"); spdlog::logger logger("failed-logger", std::make_shared<failing_sink>());
logger->set_error_handler([=](const std::string &) { throw custom_ex(); }); logger.set_error_handler([=](const std::string &) { throw custom_ex(); });
REQUIRE_THROWS_AS(logger->info("Some message"), custom_ex); REQUIRE_THROWS_AS(logger.info("Some message"), custom_ex);
} }
TEST_CASE("flush_error_handler", "[errors]]") TEST_CASE("flush_error_handler", "[errors]]")
{ {
auto logger = spdlog::create<failing_sink>("failed_logger"); spdlog::logger logger("failed-logger", std::make_shared<failing_sink>());
logger->set_error_handler([=](const std::string &) { throw custom_ex(); }); logger.set_error_handler([=](const std::string &) { throw custom_ex(); });
REQUIRE_THROWS_AS(logger->flush(), custom_ex); REQUIRE_THROWS_AS(logger.flush(), custom_ex);
} }
TEST_CASE("async_error_handler", "[errors]]") TEST_CASE("async_error_handler", "[errors]]")
......
...@@ -11,13 +11,15 @@ TEST_CASE("simple_file_logger", "[simple_logger]]") ...@@ -11,13 +11,15 @@ TEST_CASE("simple_file_logger", "[simple_logger]]")
prepare_logdir(); prepare_logdir();
spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG); spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG);
auto logger = spdlog::create<spdlog::sinks::basic_file_sink_mt>("logger", filename); auto sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(filename);
logger->set_formatter(make_unique<spdlog::pattern_formatter>("%v")); spdlog::logger logger("logger", sink);
logger->info("Test message {}", 1); logger.set_formatter(make_unique<spdlog::pattern_formatter>("%v"));
logger->info("Test message {}", 2);
logger->flush(); logger.info("Test message {}", 1);
logger.info("Test message {}", 2);
logger.flush();
require_message_count(SIMPLE_LOG, 2); require_message_count(SIMPLE_LOG, 2);
using spdlog::details::os::default_eol; using spdlog::details::os::default_eol;
REQUIRE(file_contents(SIMPLE_LOG) == fmt::format("Test message 1{}Test message 2{}", default_eol, default_eol)); REQUIRE(file_contents(SIMPLE_LOG) == fmt::format("Test message 1{}Test message 2{}", default_eol, default_eol));
...@@ -28,15 +30,17 @@ TEST_CASE("flush_on", "[flush_on]]") ...@@ -28,15 +30,17 @@ TEST_CASE("flush_on", "[flush_on]]")
prepare_logdir(); prepare_logdir();
spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG); spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG);
auto logger = spdlog::create<spdlog::sinks::basic_file_sink_mt>("logger", filename); auto sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(filename);
logger->set_formatter(make_unique<spdlog::pattern_formatter>("%v"));
logger->set_level(spdlog::level::trace); spdlog::logger logger("logger", sink);
logger->flush_on(spdlog::level::info); logger.set_formatter(make_unique<spdlog::pattern_formatter>("%v"));
logger->trace("Should not be flushed"); logger.set_level(spdlog::level::trace);
logger.flush_on(spdlog::level::info);
logger.trace("Should not be flushed");
REQUIRE(count_lines(SIMPLE_LOG) == 0); REQUIRE(count_lines(SIMPLE_LOG) == 0);
logger->info("Test message {}", 1); logger.info("Test message {}", 1);
logger->info("Test message {}", 2); logger.info("Test message {}", 2);
require_message_count(SIMPLE_LOG, 3); require_message_count(SIMPLE_LOG, 3);
using spdlog::details::os::default_eol; using spdlog::details::os::default_eol;
......
...@@ -16,7 +16,8 @@ TEST_CASE("debug and trace w/o format string", "[macros]]") ...@@ -16,7 +16,8 @@ TEST_CASE("debug and trace w/o format string", "[macros]]")
prepare_logdir(); prepare_logdir();
spdlog::filename_t filename = SPDLOG_FILENAME_T(TEST_FILENAME); spdlog::filename_t filename = SPDLOG_FILENAME_T(TEST_FILENAME);
auto logger = spdlog::create<spdlog::sinks::basic_file_sink_mt>("logger", filename); auto sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(filename);
auto logger = std::make_shared<spdlog::logger>("logger", sink);
logger->set_formatter(make_unique<spdlog::pattern_formatter>("%v")); logger->set_formatter(make_unique<spdlog::pattern_formatter>("%v"));
logger->set_level(spdlog::level::trace); logger->set_level(spdlog::level::trace);
...@@ -45,8 +46,9 @@ TEST_CASE("disable param evaluation", "[macros]") ...@@ -45,8 +46,9 @@ TEST_CASE("disable param evaluation", "[macros]")
TEST_CASE("pass logger pointer", "[macros]") TEST_CASE("pass logger pointer", "[macros]")
{ {
auto logger = spdlog::create<spdlog::sinks::null_sink_mt>("refmacro"); auto sink = std::make_shared<spdlog::sinks::null_sink_mt>();
auto &ref = *logger; spdlog::logger logger("refmacro", sink);
auto &ref = logger;
SPDLOG_LOGGER_TRACE(&ref, "Test message 1"); SPDLOG_LOGGER_TRACE(&ref, "Test message 1");
SPDLOG_LOGGER_DEBUG(&ref, "Test message 2"); SPDLOG_LOGGER_DEBUG(&ref, "Test message 2");
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment