add some options for logger
This commit is contained in:
@ -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
16
src/include/basic_defs.h
Normal 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
|
26
src/main.cpp
26
src/main.cpp
@ -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;
|
||||||
}
|
}
|
Reference in New Issue
Block a user