From ed2b9463df2fbef821b3b1d4dea9976e260eb7ca Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Mon, 15 Apr 2024 08:24:59 +0000 Subject: [PATCH] add some options for logger --- CMakeLists.txt | 11 +++++++++++ src/include/basic_defs.h | 16 ++++++++++++++++ src/main.cpp | 26 +++++++++++++++++--------- 3 files changed, 44 insertions(+), 9 deletions(-) create mode 100644 src/include/basic_defs.h diff --git a/CMakeLists.txt b/CMakeLists.txt index e15bdf0..a8cc1f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.10) Project(Ticket-System) include(CTest) set(CMAKE_CXX_STANDARD 20) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -fsanitize=address -fsanitize=undefined -fsanitize=leak") @@ -29,6 +32,14 @@ else() add_definitions(-DGIT_COMMIT_HASH="[developing]") endif() +# 设置一个布尔类型的选项,用于控制是否启用日志功能 +option(ENABLE_LOG "Enable logging" OFF) + +# 如果 ENABLE_LOG 选项为 ON,则定义 ENABLE_LOG 宏 +if (ENABLE_LOG) + add_definitions(-DENABLE_LOG) +endif() + include(FetchContent) FetchContent_Declare( googletest diff --git a/src/include/basic_defs.h b/src/include/basic_defs.h new file mode 100644 index 0000000..f84797e --- /dev/null +++ b/src/include/basic_defs.h @@ -0,0 +1,16 @@ +#ifndef BASIC_DEFS_H +#define BASIC_DEFS_H +#include +#include +#include +#include +#include +#include +#include +extern const std::string main_version; +extern const std::string build_version; +extern std::shared_ptr logger_ptr; +extern const bool global_log_enabled; +extern const bool optimize_enabled; +#define LOG if constexpr (global_log_enabled) if (logger_ptr) logger_ptr +#endif \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index d312ef8..b945326 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,18 +1,25 @@ -#include -#include -#include -#include -#include -#include -#include +#include "basic_defs.h" const std::string main_version = "0.0.1"; const std::string build_version = GIT_COMMIT_HASH; std::shared_ptr logger_ptr; +#ifdef __OPTIMIZE__ +const bool optimize_enabled = __OPTIMIZE__; +#else +const bool optimize_enabled = false; +#endif +#ifndef ENABLE_LOG +const bool global_log_enabled = false; +#else +const bool global_log_enabled = true; +#endif int main(int argc, char *argv[]) { argparse::ArgumentParser program("backend", main_version + "-" + build_version); argparse::ArgumentParser fsck_command("fsck"); fsck_command.add_description("Check and fix data"); program.add_subparser(fsck_command); + argparse::ArgumentParser server_command("server"); + server_command.add_description("Start RESTful server"); + program.add_subparser(server_command); program.add_argument("-d", "--directory").help("Directory to serve").default_value(std::string(".")).nargs(1, 1); auto &group = program.add_mutually_exclusive_group(); group.add_argument("-c", "--consolelog").help("Enable console log").default_value(false).implicit_value(true); @@ -55,7 +62,8 @@ int main(int argc, char *argv[]) { else logger_ptr = spdlog::basic_logger_mt("file_logger", log_file_name); } - if (logger_ptr) logger_ptr->info("Starting backend"); - if (logger_ptr) logger_ptr->info("Data directory: {}", data_directory); + LOG->info("Starting backend"); + LOG->info("Compile optimization enabled: {}", optimize_enabled); + LOG->info("Data directory: {}", data_directory); return 0; } \ No newline at end of file