loginit.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "loginit.h"
  2. #include "spdlog/spdlog.h"
  3. #include "spdlog/sinks/stdout_color_sinks.h"
  4. #include "spdlog/sinks/daily_file_sink.h"
  5. #include "fmt/base.h"
  6. /* 初始化spdlog */
  7. void init_log()
  8. {
  9. try {
  10. /* 创建一个控制台sink */
  11. auto sink_consolse = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
  12. /* 创建一个文件sink,每天一个,00:00创建新的 */
  13. auto sink_file = std::make_shared<spdlog::sinks::daily_file_sink_mt>("log/log.txt",0,0);
  14. /* 修改输出格式 */
  15. sink_consolse->set_pattern("%^[%Y-%m-%d %H:%M:%S] [%n] [%l] %s %#: %v%$");
  16. sink_file->set_pattern("%^[%Y-%m-%d %H:%M:%S] [%n] [%l] %s %#: %v %$");
  17. std::vector<spdlog::sink_ptr> sinks;
  18. sinks.push_back(sink_consolse);
  19. sinks.push_back(sink_file);
  20. /* 创建一个标准输出 */
  21. auto logger_main = std::make_shared<spdlog::logger>("main",begin(sinks),end(sinks));
  22. /* 创建一个MQTT输出Logger */
  23. auto logger_MQTT = std::make_shared<spdlog::logger>("MQTT",begin(sinks),end(sinks));
  24. /* 创建一个线程池输出Logger */
  25. auto logger_threadPool = std::make_shared<spdlog::logger>("ThreadPool",begin(sinks),end(sinks));
  26. /* 注册到注册表 */
  27. spdlog::register_logger(logger_main);
  28. spdlog::register_logger(logger_MQTT);
  29. spdlog::register_logger(logger_threadPool);
  30. /* 设置spdlog输出级别,默认的估计不输出debug这个级别 */
  31. #ifdef C_DEBUG
  32. spdlog::set_level(spdlog::level::trace);
  33. spdlog::flush_on(spdlog::level::trace);
  34. #elif C_RELEASE
  35. spdlog::set_level(spdlog::level::info);
  36. spdlog::flush_on(spdlog::level::info);
  37. #endif
  38. // SPDLOG_LOGGER_DEBUG(logger_main,"******* 有行号且debug也能输出 *******");
  39. } catch (const spdlog::spdlog_ex& ex) {
  40. fmt::print("Log initialization failed: %s\n", ex.what());
  41. }
  42. }