Skip to content

Instantly share code, notes, and snippets.

@jimmy947788
Created August 16, 2022 15:40
Show Gist options
  • Save jimmy947788/e0ed245b36263fc8023c4a69a72601a1 to your computer and use it in GitHub Desktop.
Save jimmy947788/e0ed245b36263fc8023c4a69a72601a1 to your computer and use it in GitHub Desktop.
方便使用 spdlog 設定
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE //一定要在 spdlog.h 之前定義
#include <spdlog/spdlog.h>
#include <spdlog/async.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/daily_file_sink.h>
int main(){
// 清掉已註冊logger
spdlog::drop_all();
spdlog::init_thread_pool(8192, 1);
// 有顏色的stdout
auto stdout_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt >();
stdout_sink->set_pattern("[multi_sink_example] [%^%l%$] %v");
// 每天1:30切log檔案
auto rotating_sink = std::make_shared<spdlog::sinks::daily_file_sink_mt>("G:\\eData\\mylog.txt", 1, 30);
rotating_sink->set_pattern("[%H:%M:%S] [%n] [%L] [TID:%t] [PID:%P] [%s(%#)::%!] %v");
// 整併為一個log,先設定好等級或其他再註冊
std::vector<spdlog::sink_ptr> sinks{ stdout_sink, rotating_sink };
auto logger = std::make_shared<spdlog::async_logger>("loggername", sinks.begin(), sinks.end(), spdlog::thread_pool(), spdlog::async_overflow_policy::block);
logger->set_level(spdlog::level::trace);
// 每隔3秒輸出
spdlog::flush_every(std::chrono::seconds(3));
// 註冊logger
spdlog::register_logger(logger);
// 設為預設 這樣才能用巨集呼叫
spdlog::set_default_logger(logger); /*** 必須要在註冊後才能設為預設 ***/
SPDLOG_INFO("1234");
SPDLOG_DEBUG("1234");
SPDLOG_TRACE("1234");
return 0;
}
@jimmy947788
Copy link
Author

確定用標準C++ 14的thread裡面是拿的到 source filename,function name, code line number

@jimmy947788
Copy link
Author

就公開拉~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment