log
1. spdlog
1.1. Get Start
问题:按顺序包含 fmt/core.h spdlog/spdlog.h 会报错??
sh
git submodule add https://github.com/gabime/spdlog third_party/spdlogcmake
add_subdirectory(third_party/spdlog)
target_link_libraries(${PROJECT_NAME} PRIVATE spdlog::spdlog)cpp
#include <spdlog/spdlog.h>
spdlog::info("message");1.2. 打印
spdlog::trace(...);spdlog::debug(...);spdlog::info(...);spdlog::warn(...);spdlog::error(...);spdlog::critical(...);(不会退出程序)- 日志等级默认 info,
spdlog::set_level(spdlog::level::debug); - 可以用
{},spdlog::info("{}", 1);
2. GLog
2.1. 安装
sh
vcpkg install glogcmake
find_package(glog CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE glog::glog)2.2. 自定义
cpp
#include <fmt/core.h>
#include <glog/logging.h>
#define log_info(...) (LOG(INFO) << fmt::format(__VA_ARGS__))
#define log_warn(...) (LOG(WARNING) << fmt::format(__VA_ARGS__))
#define log_error(...) (LOG(ERROR) << fmt::format(__VA_ARGS__))
#define log_panic(...) (LOG(FATAL) << fmt::format(__VA_ARGS__))2.3. 使用
cpp
int main(int argc, char **argv) {
std::filesystem::create_directory("log");
FLAGS_alsologtostderr = true;
FLAGS_log_dir = "log";
google::InitGoogleLogging(argv[0]);
}只在终端打印
cpp
int main(int argc, char **argv) {
FLAGS_minloglevel = 0;
FLAGS_logtostderr = 1;
google::InitGoogleLogging(argv[0]);
}