add log level control by ledger

This commit is contained in:
lnk
2026-02-06 15:27:52 +08:00
parent 2b4c939b79
commit 7312bc68d7
6 changed files with 76 additions and 87 deletions

View File

@@ -301,7 +301,8 @@ extern bool normalOutputEnabled;
"G_TEST_TYPE=<num> - Set the G_TEST_TYPE 0:use ledger,1:use number\r\n"
"TESTLEDGER <processNo>,<start>,<count> - Batch send UD ledger updates (e.g. TESTLEDGER 3,1,50)\r\n"
"LOG=<bool> - Set the LOG\r\n"
"MAX=<int> - Set the MAX_ITEMS\r\n"
"LOGLIST - List all registered loggers\r\n"
"MAX=<int> - Set the MAX_ITEMS\r\n"
"dir - Execute rocketmq_test_getdir\r\n"
"rc - Execute rocketmq_test_rc\r\n"
"rt - Execute rocketmq_test_rt\r\n"
@@ -368,6 +369,40 @@ extern bool normalOutputEnabled;
int flag = std::atoi(cmd.substr(4).c_str());
setTestlog(flag);
sendStr(clientFD, "\r\x1B[KLOG updated\r\n");
}else if (cmd == "LOGLIST" || cmd == "loglist") {
std::ostringstream oss;
// 1⃣ 打印 logger_map
oss << "\r\x1B[KRegistered loggers (" << logger_map.size() << "):\r\n";
for (const auto& it : logger_map) {
oss << " " << it.first << "\r\n";
}
// 2⃣ 打印 LogLevelCache原子只读
std::shared_ptr<LogLevelCache> cache =
std::atomic_load_explicit(&g_level_cache_sp, std::memory_order_acquire);
if (!cache) {
oss << "\r\x1B[K[LogLevelCache] <EMPTY>\r\n";
} else {
oss << "\r\x1B[K[LogLevelCache] terminal levels ("
<< cache->term_min.size() << "):\r\n";
for (const auto& kv : cache->term_min) {
oss << " terminal." << kv.first
<< " -> " << loglevel_to_str(kv.second) << "\r\n";
}
oss << "\r\x1B[K[LogLevelCache] monitor levels ("
<< cache->mp_min.size() << "):\r\n";
for (const auto& kv : cache->mp_min) {
oss << " monitor." << kv.first
<< " -> " << loglevel_to_str(kv.second) << "\r\n";
}
}
sendStr(clientFD, oss.str());
}else if (cmd.find("MAX=") == 0) {
int flag = std::atoi(cmd.substr(4).c_str());
setMaxItems(flag);
@@ -488,6 +523,7 @@ void Worker::printLedgerinshell(const terminal_dev& dev, int fd) {
os << "\r\x1B[K|-- timestamp : " << dev.timestamp << "\n";
os << "\r\x1B[K|-- Righttime : " << dev.Righttime << "\n";
os << "\r\x1B[K|-- mac : " << dev.mac << "\n";
os << "\r\x1B[K|-- loglevel : " << dev.DevLogLevel << "\n";
// ========================= 终端级 · 内部定值 =========================
// internal_valuesushort 列表)与 dz_internal_info_list 一一对应,仅展示前 MAX_ITEMS 条
@@ -553,6 +589,7 @@ void Worker::printLedgerinshell(const terminal_dev& dev, int fd) {
os << "\r\x1B[K |-- terminal_connect : " << ld.terminal_connect << "\n";
os << "\r\x1B[K |-- status : " << ld.status << "\n";
os << "\r\x1B[K |-- timestamp : " << ld.timestamp << "\n";
os << "\r\x1B[K |-- loglevel : " << ld.LineLogLevel << "\n";
os << "\r\x1B[K |-- CT1=" << ld.CT1 << ", CT2=" << ld.CT2
<< ", PT1=" << ld.PT1 << ", PT2=" << ld.PT2 << "\n";