add some options for logger

This commit is contained in:
2024-04-15 08:24:59 +00:00
parent ebc180df95
commit ed2b9463df
3 changed files with 44 additions and 9 deletions

View File

@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.10)
Project(Ticket-System) Project(Ticket-System)
include(CTest) include(CTest)
set(CMAKE_CXX_STANDARD 20) 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_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -fsanitize=address -fsanitize=undefined -fsanitize=leak") 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]") add_definitions(-DGIT_COMMIT_HASH="[developing]")
endif() endif()
# 设置一个布尔类型的选项,用于控制是否启用日志功能
option(ENABLE_LOG "Enable logging" OFF)
# 如果 ENABLE_LOG 选项为 ON则定义 ENABLE_LOG 宏
if (ENABLE_LOG)
add_definitions(-DENABLE_LOG)
endif()
include(FetchContent) include(FetchContent)
FetchContent_Declare( FetchContent_Declare(
googletest googletest

16
src/include/basic_defs.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef BASIC_DEFS_H
#define BASIC_DEFS_H
#include <spdlog/async.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/spdlog.h>
#include <argparse/argparse.hpp>
#include <iostream>
#include <string>
extern const std::string main_version;
extern const std::string build_version;
extern std::shared_ptr<spdlog::logger> 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

View File

@ -1,18 +1,25 @@
#include <spdlog/async.h> #include "basic_defs.h"
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/spdlog.h>
#include <argparse/argparse.hpp>
#include <iostream>
#include <string>
const std::string main_version = "0.0.1"; const std::string main_version = "0.0.1";
const std::string build_version = GIT_COMMIT_HASH; const std::string build_version = GIT_COMMIT_HASH;
std::shared_ptr<spdlog::logger> logger_ptr; std::shared_ptr<spdlog::logger> 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[]) { int main(int argc, char *argv[]) {
argparse::ArgumentParser program("backend", main_version + "-" + build_version); argparse::ArgumentParser program("backend", main_version + "-" + build_version);
argparse::ArgumentParser fsck_command("fsck"); argparse::ArgumentParser fsck_command("fsck");
fsck_command.add_description("Check and fix data"); fsck_command.add_description("Check and fix data");
program.add_subparser(fsck_command); 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); program.add_argument("-d", "--directory").help("Directory to serve").default_value(std::string(".")).nargs(1, 1);
auto &group = program.add_mutually_exclusive_group(); auto &group = program.add_mutually_exclusive_group();
group.add_argument("-c", "--consolelog").help("Enable console log").default_value(false).implicit_value(true); 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 else
logger_ptr = spdlog::basic_logger_mt<spdlog::async_factory>("file_logger", log_file_name); logger_ptr = spdlog::basic_logger_mt<spdlog::async_factory>("file_logger", log_file_name);
} }
if (logger_ptr) logger_ptr->info("Starting backend"); LOG->info("Starting backend");
if (logger_ptr) logger_ptr->info("Data directory: {}", data_directory); LOG->info("Compile optimization enabled: {}", optimize_enabled);
LOG->info("Data directory: {}", data_directory);
return 0; return 0;
} }