|
1 | 1 | #include "liblog.hpp" |
2 | 2 | #include "libthread.hpp" |
| 3 | +#include "spdlog/async.h" |
3 | 4 | #include "spdlog/common.h" |
4 | | -// #include "spdlog/common.h" |
| 5 | +#include "spdlog/sinks/basic_file_sink.h" |
| 6 | +#include "spdlog/sinks/rotating_file_sink.h" |
| 7 | +#include "spdlog/sinks/stdout_color_sinks.h" |
5 | 8 | #include <absl/strings/match.h> |
6 | 9 | #include <climits> |
7 | 10 | #include <photon/common/alog.h> |
@@ -62,36 +65,60 @@ SEQ_FUNC void seq_init_log(uint8_t level, const char *filename, |
62 | 65 | init_log(level, filename_); |
63 | 66 | } |
64 | 67 |
|
65 | | -void init_log(uint8_t level, const std::string &filename) { |
66 | | -#if defined(USE_FMTLOG) |
67 | | - auto logLevel = static_cast<fmtlog::LogLevel>(level); |
68 | | - fmtlog::setLogLevel(logLevel); |
69 | | - if (!filename.empty()) { |
70 | | - fmtlog::setLogFile(filename.c_str(), false); |
71 | | - } |
72 | | - // fmtlog::setLogCB(logcb, logLevel); |
73 | | - auto work_pool = seq_photon_work_pool(); |
74 | | - work_pool->thread_migrate(photon::thread_create(coro_log_run, nullptr), |
75 | | - -1UL); |
76 | | -#elif defined(USE_SPDLOG) |
| 68 | +void set_log_level(uint8_t &level, std::shared_ptr<spdlog::logger> &logger) { |
77 | 69 | switch (level) { |
78 | 70 | case 0: |
79 | | - spdlog::set_level(spdlog::level::debug); |
| 71 | + logger->set_level(spdlog::level::debug); |
80 | 72 | break; |
81 | 73 | case 1: |
82 | | - spdlog::set_level(spdlog::level::info); |
| 74 | + logger->set_level(spdlog::level::info); |
83 | 75 | break; |
84 | 76 | case 2: |
85 | | - spdlog::set_level(spdlog::level::warn); |
| 77 | + logger->set_level(spdlog::level::warn); |
86 | 78 | break; |
87 | 79 | case 3: |
88 | | - spdlog::set_level(spdlog::level::err); |
| 80 | + logger->set_level(spdlog::level::err); |
89 | 81 | break; |
90 | 82 | case 4: |
91 | | - spdlog::set_level(spdlog::level::off); |
| 83 | + logger->set_level(spdlog::level::off); |
92 | 84 | break; |
93 | 85 | } |
| 86 | +} |
94 | 87 |
|
| 88 | +void init_log(uint8_t level, const std::string &filename) { |
| 89 | +#if defined(USE_FMTLOG) |
| 90 | + auto logLevel = static_cast<fmtlog::LogLevel>(level); |
| 91 | + fmtlog::setLogLevel(logLevel); |
| 92 | + if (!filename.empty()) { |
| 93 | + fmtlog::setLogFile(filename.c_str(), false); |
| 94 | + } |
| 95 | + // fmtlog::setLogCB(logcb, logLevel); |
| 96 | + auto work_pool = seq_photon_work_pool(); |
| 97 | + work_pool->thread_migrate(photon::thread_create(coro_log_run, nullptr), |
| 98 | + -1UL); |
| 99 | +#elif defined(USE_SPDLOG) |
| 100 | + // spdlog::init_thread_pool(8192, 1); |
| 101 | + // std::string pattern = "%Y-%m-%d %H:%M:%S.%e [%l] [%t]: %v"; |
| 102 | + std::string pattern = "%Y-%m-%d %H:%M:%S.%e %l [%t]: %v"; |
| 103 | + // [%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v" |
| 104 | + auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>(); |
| 105 | + console_sink->set_pattern(pattern); |
| 106 | + std::vector<spdlog::sink_ptr> sinks{console_sink}; |
| 107 | + if (!filename.empty()) { |
| 108 | + auto rotating_sink = |
| 109 | + std::make_shared<spdlog::sinks::rotating_file_sink_mt>( |
| 110 | + filename, 1024 * 1024 * 10, 3); |
| 111 | + rotating_sink->set_pattern(pattern); |
| 112 | + sinks.push_back(rotating_sink); |
| 113 | + } |
| 114 | + // auto logger = std::make_shared<spdlog::async_logger>( |
| 115 | + // "mylogger", sinks.begin(), sinks.end(), spdlog::thread_pool(), |
| 116 | + // spdlog::async_overflow_policy::block); |
| 117 | + auto logger = std::make_shared<spdlog::logger>("mylogger", sinks.begin(), |
| 118 | + sinks.end()); |
| 119 | + set_log_level(level, logger); |
| 120 | + spdlog::set_default_logger(logger); |
| 121 | + // spdlog::register_logger(logger); |
95 | 122 | #else |
96 | 123 | auto logLevel = static_cast<quill::LogLevel>(level); |
97 | 124 | quill::get_logger()->set_log_level(logLevel); // quill::LogLevel::TraceL1 |
|
0 commit comments