Skip to content

Commit 650c878

Browse files
committed
Update
1 parent e488f60 commit 650c878

File tree

5 files changed

+94
-24
lines changed

5 files changed

+94
-24
lines changed

moxt/cclient.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,12 @@ CHttpResponse CClient::doRequest(const std::string &path,
119119
}
120120
}
121121

122-
if (ret != 200) {
123-
logw("connect to server failed. http response code: {}", ret);
124-
return CHttpResponse{500,
125-
fmt::format("Request failed status={} body={}",
126-
ret, writer.string)};
127-
}
122+
// if (ret == 500) {
123+
// logw("connect to server failed. http response code: {}", ret);
124+
// return CHttpResponse{500,
125+
// fmt::format("Request failed status={} body={}",
126+
// ret, writer.string)};
127+
// }
128128

129129
return CHttpResponse{static_cast<uint64_t>(ret), writer.string};
130130
}

moxt/common.hpp

+4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@
3131
#if defined(USE_FMTLOG)
3232
#include <fmtlog/fmtlog.h>
3333
#elif defined(USE_SPDLOG)
34+
35+
#define SPDLOG_LEVEL_NAMES \
36+
{ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "CRITICAL", "" }
37+
3438
#include <spdlog/spdlog.h>
3539
#define logd spdlog::debug
3640
#define logi spdlog::info

moxt/liblog.cpp

+45-18
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
#include "liblog.hpp"
22
#include "libthread.hpp"
3+
#include "spdlog/async.h"
34
#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"
58
#include <absl/strings/match.h>
69
#include <climits>
710
#include <photon/common/alog.h>
@@ -62,36 +65,60 @@ SEQ_FUNC void seq_init_log(uint8_t level, const char *filename,
6265
init_log(level, filename_);
6366
}
6467

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) {
7769
switch (level) {
7870
case 0:
79-
spdlog::set_level(spdlog::level::debug);
71+
logger->set_level(spdlog::level::debug);
8072
break;
8173
case 1:
82-
spdlog::set_level(spdlog::level::info);
74+
logger->set_level(spdlog::level::info);
8375
break;
8476
case 2:
85-
spdlog::set_level(spdlog::level::warn);
77+
logger->set_level(spdlog::level::warn);
8678
break;
8779
case 3:
88-
spdlog::set_level(spdlog::level::err);
80+
logger->set_level(spdlog::level::err);
8981
break;
9082
case 4:
91-
spdlog::set_level(spdlog::level::off);
83+
logger->set_level(spdlog::level::off);
9284
break;
9385
}
86+
}
9487

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);
95122
#else
96123
auto logLevel = static_cast<quill::LogLevel>(level);
97124
quill::get_logger()->set_log_level(logLevel); // quill::LogLevel::TraceL1

moxt/libthread.cpp

+33
Original file line numberDiff line numberDiff line change
@@ -499,12 +499,45 @@ SEQ_FUNC bool seq_lockfree_queue_push(CLockfreeSPSCRingQueueHandle handle,
499499
return queue->push(*data);
500500
}
501501

502+
SEQ_FUNC bool seq_lockfree_queue_push_data(CLockfreeSPSCRingQueueHandle handle,
503+
const void *data, size_t len) {
504+
auto queue = static_cast<LockfreeSPSCRingQueue<iovec, capacity> *>(handle);
505+
506+
// 分配新的内存
507+
char* buffer = new char[len];
508+
memcpy(buffer, data, len);
509+
510+
iovec iov{buffer, len};
511+
if (!queue->push(iov)) {
512+
delete[] buffer;
513+
return false;
514+
}
515+
return true;
516+
}
517+
502518
SEQ_FUNC bool seq_lockfree_queue_pop(CLockfreeSPSCRingQueueHandle handle,
503519
iovec *data) {
504520
auto queue = static_cast<LockfreeSPSCRingQueue<iovec, capacity> *>(handle);
505521
return queue->pop(*data);
506522
}
507523

524+
SEQ_FUNC bool seq_lockfree_queue_pop_data(CLockfreeSPSCRingQueueHandle handle,
525+
void *output, size_t *len) {
526+
auto queue = static_cast<LockfreeSPSCRingQueue<iovec, capacity> *>(handle);
527+
iovec iov;
528+
auto ok = queue->pop(iov);
529+
if (ok) {
530+
memcpy(output, iov.iov_base, iov.iov_len);
531+
*len = iov.iov_len;
532+
533+
// 释放之前分配的内存
534+
delete[] static_cast<char*>(iov.iov_base);
535+
} else {
536+
*len = 0;
537+
}
538+
return ok;
539+
}
540+
508541
// 定义 sample_callback_
509542
sample_callback sample_callback_ = nullptr;
510543

moxt/libthread.hpp

+6
Original file line numberDiff line numberDiff line change
@@ -164,10 +164,16 @@ SEQ_FUNC void seq_lockfree_queue_free(CLockfreeSPSCRingQueueHandle handle);
164164
SEQ_FUNC bool seq_lockfree_queue_push(CLockfreeSPSCRingQueueHandle handle,
165165
const iovec *data);
166166

167+
SEQ_FUNC bool seq_lockfree_queue_push_data(CLockfreeSPSCRingQueueHandle handle,
168+
const void *data, size_t len);
169+
167170
// 出队操作
168171
SEQ_FUNC bool seq_lockfree_queue_pop(CLockfreeSPSCRingQueueHandle handle,
169172
iovec *data);
170173

174+
SEQ_FUNC bool seq_lockfree_queue_pop_data(CLockfreeSPSCRingQueueHandle handle,
175+
void *output, size_t *len);
176+
171177
typedef void (*sample_callback)();
172178

173179
#endif

0 commit comments

Comments
 (0)