From 9862c2a926bf80a359064ecdee03a563ed828253 Mon Sep 17 00:00:00 2001 From: WolverinDEV Date: Sat, 23 Nov 2019 21:17:27 +0100 Subject: [PATCH] Improved logging system and using spdlog 1.4.2 --- server/main.cpp | 4 ++++ server/src/logger.cpp | 16 ++++++++++------ server/src/server.cpp | 3 +++ server/src/server.h | 4 ++-- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/server/main.cpp b/server/main.cpp index e9217c1..ee67ce8 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -90,6 +90,10 @@ int main(int argc, char** argv) { } } + server.stop(); + + log_general()->info("Server stopped"); logger::shutdown(); + libevent_global_shutdown(); return 0; } \ No newline at end of file diff --git a/server/src/logger.cpp b/server/src/logger.cpp index 2198725..7c4eb2d 100644 --- a/server/src/logger.cpp +++ b/server/src/logger.cpp @@ -1,13 +1,17 @@ #include "./logger.h" #include -#include +#include +#include #include +#include namespace fs = std::experimental::filesystem; const static std::string log_folder{"logs/"}; +std::shared_ptr log_thread{nullptr}; + std::shared_ptr logger::logger_general{nullptr}; std::shared_ptr logger::logger_network{nullptr}; std::shared_ptr logger::logger_dns{nullptr}; @@ -22,7 +26,6 @@ bool logger::setup(std::string& error) { error = "failed to create log folder at " + log_folder + ": " + std::string{ex.what()}; return false; } - std::vector sinks{}; sinks.reserve(2); { @@ -30,14 +33,15 @@ bool logger::setup(std::string& error) { file_sink->set_level(spdlog::level::trace); sinks.push_back(file_sink); - auto console_sink = std::make_shared(); + auto console_sink = std::make_shared(); console_sink->set_level(spdlog::level::trace); sinks.push_back(console_sink); } - spdlog::register_logger(logger_general = std::make_shared("general", std::begin(sinks), std::end(sinks), 8192, spdlog::async_overflow_policy::block_retry)); - spdlog::register_logger(logger_network = std::make_shared("network", std::begin(sinks), std::end(sinks), 8192, spdlog::async_overflow_policy::block_retry)); - spdlog::register_logger(logger_dns = std::make_shared("dns ", std::begin(sinks), std::end(sinks), 8192, spdlog::async_overflow_policy::block_retry)); + log_thread = std::make_shared(1024, 1); + spdlog::register_logger(logger_general = std::make_shared("general", std::begin(sinks), std::end(sinks), log_thread, spdlog::async_overflow_policy::block)); + spdlog::register_logger(logger_network = std::make_shared("network", std::begin(sinks), std::end(sinks), log_thread, spdlog::async_overflow_policy::block)); + spdlog::register_logger(logger_dns = std::make_shared("dns ", std::begin(sinks), std::end(sinks), log_thread, spdlog::async_overflow_policy::block)); spdlog::apply_all([](const std::shared_ptr& l) { l->set_level(spdlog::level::trace); diff --git a/server/src/server.cpp b/server/src/server.cpp index 1128bd5..dcb67b0 100644 --- a/server/src/server.cpp +++ b/server/src/server.cpp @@ -106,6 +106,9 @@ void DNSServer::stop() { event_free(this->event_base_ticker); this->event_base_ticker = nullptr; + + event_base_free(this->event_base); + this->event_base = nullptr; } bool DNSServer::bind(DNSServerBinding &binding, std::string &error) { diff --git a/server/src/server.h b/server/src/server.h index 42bb140..e7d48d1 100644 --- a/server/src/server.h +++ b/server/src/server.h @@ -28,7 +28,7 @@ namespace ts::dns { int socket{0}; std::string error{}; - inline bool active() const { return this->socket != 0; } + [[nodiscard]] inline bool active() const { return this->socket != 0; } std::mutex io_lock{}; @@ -44,7 +44,7 @@ namespace ts::dns { class DNSHandler; class DNSServer { public: - DNSServer(std::shared_ptr handler) : handler{std::move(handler)} {}; + explicit DNSServer(std::shared_ptr handler) : handler{std::move(handler)} {}; virtual ~DNSServer(); bool start(const std::vector& /* bindings */, std::string& /* error */);