From 1e58abdfdd64f89f54cccdb555133d55ee7a85bf Mon Sep 17 00:00:00 2001 From: dijunkun Date: Tue, 26 Nov 2024 16:05:28 +0800 Subject: [PATCH] [feat] rewrite log module --- src/log/rd_log.cpp | 29 ++++++++++++++ src/log/rd_log.h | 97 ++++----------------------------------------- thirdparty/projectx | 2 +- xmake.lua | 2 +- 4 files changed, 38 insertions(+), 92 deletions(-) create mode 100644 src/log/rd_log.cpp diff --git a/src/log/rd_log.cpp b/src/log/rd_log.cpp new file mode 100644 index 0000000..6b01b48 --- /dev/null +++ b/src/log/rd_log.cpp @@ -0,0 +1,29 @@ +#include "rd_log.h" + +std::shared_ptr get_logger() { + if (auto logger = spdlog::get(LOGGER_NAME)) { + return logger; + } + + auto now = std::chrono::system_clock::now() + std::chrono::hours(8); + auto timet = std::chrono::system_clock::to_time_t(now); + auto localTime = *std::gmtime(&timet); + std::stringstream ss; + std::string filename; + ss << LOGGER_NAME; + ss << std::put_time(&localTime, "-%Y%m%d-%H%M%S.log"); + ss >> filename; + + std::string path = "logs/" + filename; + std::vector sinks; + sinks.push_back(std::make_shared()); + sinks.push_back(std::make_shared( + path, 1048576 * 5, 3)); + + auto combined_logger = + std::make_shared(LOGGER_NAME, begin(sinks), end(sinks)); + combined_logger->flush_on(spdlog::level::info); + spdlog::register_logger(combined_logger); + + return combined_logger; +} diff --git a/src/log/rd_log.h b/src/log/rd_log.h index 4b3d089..5fb04fb 100644 --- a/src/log/rd_log.h +++ b/src/log/rd_log.h @@ -1,6 +1,6 @@ /* * @Author: DI JUNKUN - * @Date: 2024-07-17 + * @Date: 2024-11-26 * Copyright (c) 2024 by DI JUNKUN, All Rights Reserved. */ @@ -26,97 +26,14 @@ using namespace std::chrono; constexpr auto LOGGER_NAME = "rd"; -#define LOG_INFO(...) \ - if (nullptr == spdlog::get(LOGGER_NAME)) { \ - auto now = std::chrono::system_clock::now() + std::chrono::hours(8); \ - auto timet = std::chrono::system_clock::to_time_t(now); \ - auto localTime = *std::gmtime(&timet); \ - std::stringstream ss; \ - std::string filename; \ - ss << LOGGER_NAME; \ - ss << std::put_time(&localTime, "-%Y%m%d-%H%M%S.log"); \ - ss >> filename; \ - std::string path = "logs/" + filename; \ - std::vector sinks; \ - sinks.push_back(std::make_shared()); \ - sinks.push_back(std::make_shared( \ - path, 1048576 * 5, 3)); \ - auto combined_logger = std::make_shared( \ - LOGGER_NAME, begin(sinks), end(sinks)); \ - combined_logger->flush_on(spdlog::level::info); \ - spdlog::register_logger(combined_logger); \ - SPDLOG_LOGGER_INFO(combined_logger, __VA_ARGS__); \ - } else { \ - SPDLOG_LOGGER_INFO(spdlog::get(LOGGER_NAME), __VA_ARGS__); \ - } +std::shared_ptr get_logger(); -#define LOG_WARN(...) \ - if (nullptr == spdlog::get(LOGGER_NAME)) { \ - auto now = std::chrono::system_clock::now() + std::chrono::hours(8); \ - auto timet = std::chrono::system_clock::to_time_t(now); \ - auto localTime = *std::gmtime(&timet); \ - std::stringstream ss; \ - std::string filename; \ - ss << LOGGER_NAME; \ - ss << std::put_time(&localTime, "-%Y%m%d-%H%M%S.log"); \ - ss >> filename; \ - std::string path = "logs/" + filename; \ - std::vector sinks; \ - sinks.push_back(std::make_shared()); \ - sinks.push_back(std::make_shared( \ - path, 1048576 * 5, 3)); \ - auto combined_logger = std::make_shared( \ - LOGGER_NAME, begin(sinks), end(sinks)); \ - spdlog::register_logger(combined_logger); \ - SPDLOG_LOGGER_WARN(combined_logger, __VA_ARGS__); \ - } else { \ - SPDLOG_LOGGER_WARN(spdlog::get(LOGGER_NAME), __VA_ARGS__); \ - } +#define LOG_INFO(...) SPDLOG_LOGGER_INFO(get_logger(), __VA_ARGS__); -#define LOG_ERROR(...) \ - if (nullptr == spdlog::get(LOGGER_NAME)) { \ - auto now = std::chrono::system_clock::now() + std::chrono::hours(8); \ - auto timet = std::chrono::system_clock::to_time_t(now); \ - auto localTime = *std::gmtime(&timet); \ - std::stringstream ss; \ - std::string filename; \ - ss << LOGGER_NAME; \ - ss << std::put_time(&localTime, "-%Y%m%d-%H%M%S.log"); \ - ss >> filename; \ - std::string path = "logs/" + filename; \ - std::vector sinks; \ - sinks.push_back(std::make_shared()); \ - sinks.push_back(std::make_shared( \ - path, 1048576 * 5, 3)); \ - auto combined_logger = std::make_shared( \ - LOGGER_NAME, begin(sinks), end(sinks)); \ - spdlog::register_logger(combined_logger); \ - SPDLOG_LOGGER_ERROR(combined_logger, __VA_ARGS__); \ - } else { \ - SPDLOG_LOGGER_ERROR(spdlog::get(LOGGER_NAME), __VA_ARGS__); \ - } +#define LOG_WARN(...) SPDLOG_LOGGER_WARN(get_logger(), __VA_ARGS__); -#define LOG_FATAL(...) \ - if (nullptr == spdlog::get(LOGGER_NAME)) { \ - auto now = std::chrono::system_clock::now() + std::chrono::hours(8); \ - auto timet = std::chrono::system_clock::to_time_t(now); \ - auto localTime = *std::gmtime(&timet); \ - std::stringstream ss; \ - std::string filename; \ - ss << LOGGER_NAME; \ - ss << std::put_time(&localTime, "-%Y%m%d-%H%M%S.log"); \ - ss >> filename; \ - std::string path = "logs/" + filename; \ - std::vector sinks; \ - sinks.push_back(std::make_shared()); \ - sinks.push_back(std::make_shared( \ - path, 1048576 * 5, 3)); \ - auto combined_logger = std::make_shared( \ - LOGGER_NAME, begin(sinks), end(sinks)); \ - spdlog::register_logger(combined_logger); \ - SPDLOG_LOGGER_CRITICAL(combined_logger, __VA_ARGS__); \ - } else { \ - SPDLOG_LOGGER_CRITICAL(spdlog::get(LOGGER_NAME), __VA_ARGS__); \ - } +#define LOG_ERROR(...) SPDLOG_LOGGER_ERROR(get_logger(), __VA_ARGS__); + +#define LOG_FATAL(...) SPDLOG_LOGGER_CRITICAL(get_logger(), __VA_ARGS__); #endif \ No newline at end of file diff --git a/thirdparty/projectx b/thirdparty/projectx index 09c0ab9..8d56a76 160000 --- a/thirdparty/projectx +++ b/thirdparty/projectx @@ -1 +1 @@ -Subproject commit 09c0ab923504779214c511378b8495c47ca7b05a +Subproject commit 8d56a768448f7e8b6a8e04d70cc015bc254caa07 diff --git a/xmake.lua b/xmake.lua index 81a4319..0f7290b 100644 --- a/xmake.lua +++ b/xmake.lua @@ -52,7 +52,7 @@ includes("thirdparty") target("rd_log") set_kind("object") add_packages("spdlog") - add_headerfiles("src/log/rd_log.h") + add_files("src/log/rd_log.cpp") add_includedirs("src/log", {public = true}) target("common")