integrate spdlog
This commit is contained in:
@ -43,6 +43,12 @@ FetchContent_Declare(
|
|||||||
URL ${CMAKE_SOURCE_DIR}/deps/argparse-v3.0-mirror.zip
|
URL ${CMAKE_SOURCE_DIR}/deps/argparse-v3.0-mirror.zip
|
||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(argparse)
|
FetchContent_MakeAvailable(argparse)
|
||||||
|
FetchContent_Declare(
|
||||||
|
spdlog
|
||||||
|
URL_HASH SHA256=9f6763bb76fff7db371f5733626c83352edd7c57899501ab00248fafad9cc504
|
||||||
|
URL ${CMAKE_SOURCE_DIR}/deps/spdlog-v1.13.0-mirror.zip
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(spdlog)
|
||||||
include_directories(${CMAKE_SOURCE_DIR}/bpt/include)
|
include_directories(${CMAKE_SOURCE_DIR}/bpt/include)
|
||||||
include_directories(${CMAKE_SOURCE_DIR}/stlite)
|
include_directories(${CMAKE_SOURCE_DIR}/stlite)
|
||||||
enable_testing()
|
enable_testing()
|
||||||
|
BIN
deps/spdlog-v1.13.0-mirror.zip
vendored
Normal file
BIN
deps/spdlog-v1.13.0-mirror.zip
vendored
Normal file
Binary file not shown.
@ -5,4 +5,5 @@ if(OJ_TEST_BACKEND)
|
|||||||
endif()
|
endif()
|
||||||
add_executable(${BACKEND_EXETUABLE_NAME} main.cpp)
|
add_executable(${BACKEND_EXETUABLE_NAME} main.cpp)
|
||||||
target_link_libraries(${BACKEND_EXETUABLE_NAME} argparse)
|
target_link_libraries(${BACKEND_EXETUABLE_NAME} argparse)
|
||||||
|
target_link_libraries(${BACKEND_EXETUABLE_NAME} spdlog::spdlog)
|
||||||
set_target_properties(${BACKEND_EXETUABLE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
set_target_properties(${BACKEND_EXETUABLE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
46
src/main.cpp
46
src/main.cpp
@ -1,9 +1,27 @@
|
|||||||
|
#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 <argparse/argparse.hpp>
|
||||||
|
#include <iostream>
|
||||||
#include <string>
|
#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;
|
||||||
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");
|
||||||
|
fsck_command.add_description("Check and fix data");
|
||||||
|
program.add_subparser(fsck_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);
|
||||||
|
group.add_argument("-l", "--logfile").help("Enable log file").nargs(1, 1);
|
||||||
|
program.add_argument("--level")
|
||||||
|
.help("Log level")
|
||||||
|
.default_value(std::string("info"))
|
||||||
|
.nargs(1, 1)
|
||||||
|
.choices("debug", "info", "warn", "error");
|
||||||
try {
|
try {
|
||||||
program.parse_args(argc, argv);
|
program.parse_args(argc, argv);
|
||||||
} catch (const std::exception &err) {
|
} catch (const std::exception &err) {
|
||||||
@ -11,5 +29,33 @@ int main(int argc, char *argv[]) {
|
|||||||
std::cerr << program;
|
std::cerr << program;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
auto data_directory = program.get<std::string>("--directory");
|
||||||
|
bool log_enabled = program.get<bool>("--consolelog");
|
||||||
|
std::string log_file_name;
|
||||||
|
if (auto it = program.present("--logfile")) {
|
||||||
|
log_enabled = true;
|
||||||
|
log_file_name = program.get<std::string>("--logfile");
|
||||||
|
}
|
||||||
|
std::string log_level = program.get<std::string>("--level");
|
||||||
|
if (log_level == "debug")
|
||||||
|
spdlog::set_level(spdlog::level::debug);
|
||||||
|
else if (log_level == "info")
|
||||||
|
spdlog::set_level(spdlog::level::info);
|
||||||
|
else if (log_level == "warn")
|
||||||
|
spdlog::set_level(spdlog::level::warn);
|
||||||
|
else if (log_level == "error")
|
||||||
|
spdlog::set_level(spdlog::level::err);
|
||||||
|
else {
|
||||||
|
std::cerr << "Invalid log level" << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (log_enabled) {
|
||||||
|
if (log_file_name == "")
|
||||||
|
logger_ptr = spdlog::stderr_color_mt("stderr_logger");
|
||||||
|
else
|
||||||
|
logger_ptr = spdlog::basic_logger_mt<spdlog::async_factory>("file_logger", log_file_name);
|
||||||
|
}
|
||||||
|
if (logger_ptr) logger_ptr->info("Starting backend");
|
||||||
|
if (logger_ptr) logger_ptr->info("Data directory: {}", data_directory);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
Reference in New Issue
Block a user