|
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