使用
stdafx.h 里面包含
#include <spdlog/spdlog.h> #include <spdlog/sinks/rotating_file_sink.h> extern std::shared_ptr<spdlog::logger> g_logger;
stdafx.cpp 里面包含 std::shared_ptr<spdlog::logger> g_logger;
g_logger = spdlog::get("IoTBackend"); if (g_logger == nullptr) { g_logger = spdlog::rotating_logger_mt("IoTBackend", m_curInfo.appPath + "IoTBackend.log", 1048576 * 100, 10); g_logger->set_level(spdlog::level::level_enum(logLevel)); g_logger->flush_on(spdlog::level::level_enum(logLevel)); g_logger->info("logger is started."); } g_logger->info(APP_VERSION);
spdlog::drop_all();
或者单独drop某个logger spd::drop("console"); spd::drop("basic_logger");
|
格式化
spdlog::info("Hello, {}!", "World"); logger->info("Hello {} {} !!", "param1", 123.4);
spdlog::warn("Easy padding in numbers like {:08d}", 12); spdlog::critical("Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}", 42); spdlog::info("Support for floats {:03.2f}", 1.23456); spdlog::info("Positional args are {1} {0}..", "too", "supported"); spdlog::info("{:<30}", "left aligned");
|
条件输出
g_logger->set_level(spdlog::level::trace);
m_pConf = confHelper::getInstance(); m_pConf->open(m_curInfo.appPath + "dev_noise_jnrs.json"); int32_t logLevel = m_pConf->readInt("logLevel"); g_logger->set_level(spdlog::level::level_enum(logLevel));
|
#include <spdlog/spdlog.h> #include <spdlog/sinks/rotating_file_sink.h>
m_configPath = getAppPath() + _T("logs");
std::shared_ptr<spdlog::logger> m_logger;
if (FALSE == PathFileExists(m_configPath.c_str())) { DWORD dwErrCode = GetLastError(); if (FALSE == CreateDirectory(m_configPath.c_str(), NULL)) { OutputDebugString(L"videoHelper: 创建日志目录失败"); } }
m_pConf = confHelper::getInstance(); m_pConf->open(m_curInfo.appPath + "dev_noise_jnrs.json"); int64_t logLevel = m_pConf->readInt("logLevel");
m_logger = spdlog::get("videoHelper"); if (m_logger == nullptr) { m_logger = spdlog::rotating_logger_mt("videoHelper", "c:/collectorShanghaiXiTongHa360ams.txt", 1048576 * 10, 3); g_logger->set_level(spdlog::level::level_enum(logLevel)); g_logger->flush_on(spdlog::level::level_enum(logLevel)); m_logger->info("m_logger is started."); }
m_logger = spdlog::rotating_logger_mt("videoHelper", w2s(m_configPath) + "/videoHelperLog.txt", 1048576 * 10, 3);
m_logger->info("m_logger is started.");
|
释放
spdlog::drop_all();
或者单独drop某个logger spd::drop("console"); spd::drop("basic_logger");
|
异步log
目前暂时未对性能造成影响,如果有影响了,可以使用这个看看
#include "spdlog/async.h" void async_example() { auto async_file = spdlog::basic_logger_mt<spdlog::async_factory>("async_file_logger", "logs/async_log.txt"); }
|