Commit 8901cbff authored by gabime's avatar gabime

added catch macro and fixed some tests

parent b9d7c45e
...@@ -179,4 +179,7 @@ using filename_t = std::wstring; ...@@ -179,4 +179,7 @@ using filename_t = std::wstring;
using filename_t = std::string; using filename_t = std::string;
#endif #endif
#define SPDLOG_CATCH_AND_HANDLE catch (const std::exception &ex) {_err_handler(ex.what());}\
catch (...) {_err_handler("Unknown exeption in logger");}
} // namespace spdlog } // namespace spdlog
This diff is collapsed.
...@@ -80,14 +80,7 @@ inline void spdlog::async_logger::_backend_log(details::log_msg &incoming_log_ms ...@@ -80,14 +80,7 @@ inline void spdlog::async_logger::_backend_log(details::log_msg &incoming_log_ms
} }
} }
} }
catch (const std::exception &ex) SPDLOG_CATCH_AND_HANDLE
{
_err_handler(ex.what());
}
catch (...)
{
_err_handler("Unknown exception in async logger " + _name);
}
if (_should_flush(incoming_log_msg)) if (_should_flush(incoming_log_msg))
{ {
...@@ -99,18 +92,10 @@ inline void spdlog::async_logger::_backend_flush() ...@@ -99,18 +92,10 @@ inline void spdlog::async_logger::_backend_flush()
{ {
try try
{ {
for (auto &sink : _sinks) for (auto &sink : _sinks)
{ {
sink->flush(); sink->flush();
} }
} }
catch (const std::exception &ex) SPDLOG_CATCH_AND_HANDLE
{
_err_handler(ex.what());
}
catch (...)
{
_err_handler("Unknown exception in async logger " + _name);
}
} }
...@@ -66,14 +66,7 @@ inline void spdlog::logger::log(level::level_enum lvl, const char *fmt, const Ar ...@@ -66,14 +66,7 @@ inline void spdlog::logger::log(level::level_enum lvl, const char *fmt, const Ar
#endif #endif
_sink_it(log_msg); _sink_it(log_msg);
} }
catch (const std::exception &ex) SPDLOG_CATCH_AND_HANDLE
{
_err_handler(ex.what());
}
catch (...)
{
_err_handler("Unknown exception in logger " + _name);
}
} }
template<typename... Args> template<typename... Args>
...@@ -89,14 +82,7 @@ inline void spdlog::logger::log(level::level_enum lvl, const char *msg) ...@@ -89,14 +82,7 @@ inline void spdlog::logger::log(level::level_enum lvl, const char *msg)
log_msg.raw << msg; log_msg.raw << msg;
_sink_it(log_msg); _sink_it(log_msg);
} }
catch (const std::exception &ex) SPDLOG_CATCH_AND_HANDLE
{
_err_handler(ex.what());
}
catch (...)
{
_err_handler("Unknown exception in logger " + _name);
}
} }
template<typename T> template<typename T>
...@@ -112,14 +98,7 @@ inline void spdlog::logger::log(level::level_enum lvl, const T &msg) ...@@ -112,14 +98,7 @@ inline void spdlog::logger::log(level::level_enum lvl, const T &msg)
log_msg.raw << msg; log_msg.raw << msg;
_sink_it(log_msg); _sink_it(log_msg);
} }
catch (const std::exception &ex) SPDLOG_CATCH_AND_HANDLE
{
_err_handler(ex.what());
}
catch (...)
{
_err_handler("Unknown exception in logger " + _name);
}
} }
template<typename Arg1, typename... Args> template<typename Arg1, typename... Args>
...@@ -282,14 +261,7 @@ inline void spdlog::logger::flush() ...@@ -282,14 +261,7 @@ inline void spdlog::logger::flush()
{ {
_flush(); _flush();
} }
catch (const std::exception &ex) SPDLOG_CATCH_AND_HANDLE
{
_err_handler(ex.what());
}
catch (...)
{
_err_handler("Unknown exception in logger during flush: " + _name);
}
} }
inline void spdlog::logger::flush_on(level::level_enum log_level) inline void spdlog::logger::flush_on(level::level_enum log_level)
......
...@@ -50,8 +50,9 @@ TEST_CASE("flush_on", "[flush_on]]") ...@@ -50,8 +50,9 @@ TEST_CASE("flush_on", "[flush_on]]")
TEST_CASE("rotating_file_logger1", "[rotating_logger]]") TEST_CASE("rotating_file_logger1", "[rotating_logger]]")
{ {
prepare_logdir(); prepare_logdir();
size_t max_size = 1024 * 10;
std::string basename = "logs/rotating_log"; std::string basename = "logs/rotating_log";
auto logger = spdlog::rotating_logger_mt("logger", basename, 1024, 0); auto logger = spdlog::rotating_logger_mt("logger", basename, max_size, 0);
for (int i = 0; i < 10; ++i) for (int i = 0; i < 10; ++i)
{ {
...@@ -70,8 +71,9 @@ TEST_CASE("rotating_file_logger1", "[rotating_logger]]") ...@@ -70,8 +71,9 @@ TEST_CASE("rotating_file_logger1", "[rotating_logger]]")
TEST_CASE("rotating_file_logger2", "[rotating_logger]]") TEST_CASE("rotating_file_logger2", "[rotating_logger]]")
{ {
prepare_logdir(); prepare_logdir();
size_t max_size = 1024 * 10;
std::string basename = "logs/rotating_log"; std::string basename = "logs/rotating_log";
auto logger = spdlog::rotating_logger_mt("logger", basename, 1024, 1); auto logger = spdlog::rotating_logger_mt("logger", basename, max_size, 1);
for (int i = 0; i < 10; ++i) for (int i = 0; i < 10; ++i)
logger->info("Test message {}", i); logger->info("Test message {}", i);
...@@ -88,9 +90,9 @@ TEST_CASE("rotating_file_logger2", "[rotating_logger]]") ...@@ -88,9 +90,9 @@ TEST_CASE("rotating_file_logger2", "[rotating_logger]]")
} }
logger->flush(); logger->flush();
REQUIRE(get_filesize(filename) <= 1024); REQUIRE(get_filesize(filename) <= max_size);
auto filename1 = basename + ".1"; auto filename1 = basename + ".1";
REQUIRE(get_filesize(filename1) <= 1024); REQUIRE(get_filesize(filename1) <= max_size);
} }
TEST_CASE("daily_logger", "[daily_logger]]") TEST_CASE("daily_logger", "[daily_logger]]")
......
...@@ -18,7 +18,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "spdlog", "spdlog", "{0C0430 ...@@ -18,7 +18,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "spdlog", "spdlog", "{0C0430
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "details", "details", "{C8A207B7-6930-4D28-85BB-EA79ADFD7DAC}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "details", "details", "{C8A207B7-6930-4D28-85BB-EA79ADFD7DAC}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
..\include\spdlog\details\async_log_helper.h = ..\include\spdlog\details\async_log_helper.h
..\include\spdlog\details\async_logger_impl.h = ..\include\spdlog\details\async_logger_impl.h ..\include\spdlog\details\async_logger_impl.h = ..\include\spdlog\details\async_logger_impl.h
..\include\spdlog\details\file_helper.h = ..\include\spdlog\details\file_helper.h ..\include\spdlog\details\file_helper.h = ..\include\spdlog\details\file_helper.h
..\include\spdlog\details\log_msg.h = ..\include\spdlog\details\log_msg.h ..\include\spdlog\details\log_msg.h = ..\include\spdlog\details\log_msg.h
......
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