aboutsummaryrefslogtreecommitdiffstats
path: root/community/ceph17/46-fmt9-2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/ceph17/46-fmt9-2.patch')
-rw-r--r--community/ceph17/46-fmt9-2.patch107
1 files changed, 107 insertions, 0 deletions
diff --git a/community/ceph17/46-fmt9-2.patch b/community/ceph17/46-fmt9-2.patch
new file mode 100644
index 00000000000..363211cbcbf
--- /dev/null
+++ b/community/ceph17/46-fmt9-2.patch
@@ -0,0 +1,107 @@
+Patch-Source: https://github.com/ceph/ceph/commit/c0a3d46029757863e6c4b7c317ed31236b8c1345
+From c0a3d46029757863e6c4b7c317ed31236b8c1345 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=E8=83=A1=E7=8E=AE=E6=96=87?= <huww98@outlook.com>
+Date: Wed, 22 Dec 2021 01:46:32 +0800
+Subject: [PATCH] mon: use fmt::format for stderr cluster logging
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Just like 8e78ca5f958 but for mon cluster log.
+
+Signed-off-by: 胡玮文 <huww98@outlook.com>
+---
+ src/mon/LogMonitor.cc | 26 ++++++++++++++------------
+ src/mon/LogMonitor.h | 2 +-
+ 2 files changed, 15 insertions(+), 13 deletions(-)
+
+diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc
+index 094ea54b65247..e6d1029a1f7b3 100644
+--- a/src/mon/LogMonitor.cc
++++ b/src/mon/LogMonitor.cc
+@@ -42,6 +42,7 @@
+
+ #include <boost/algorithm/string/predicate.hpp>
+
++#include <iterator>
+ #include <sstream>
+ #include <syslog.h>
+
+@@ -354,10 +355,6 @@ void LogMonitor::log_external(const LogEntry& le)
+ channel = CLOG_CHANNEL_CLUSTER;
+ }
+
+- if (g_conf().get_val<bool>("mon_cluster_log_to_stderr")) {
+- cerr << channel << " " << le << std::endl;
+- }
+-
+ if (channels.do_log_to_syslog(channel)) {
+ string level = channels.get_level(channel);
+ string facility = channels.get_facility(channel);
+@@ -386,21 +383,19 @@ void LogMonitor::log_external(const LogEntry& le)
+ dout(7) << "journald: " << channel << dendl;
+ }
+
++ bool do_stderr = g_conf().get_val<bool>("mon_cluster_log_to_stderr");
++ int fd = -1;
+ if (g_conf()->mon_cluster_log_to_file) {
+ if (this->log_rotated.exchange(false)) {
+ this->log_external_close_fds();
+ }
+
+ auto p = channel_fds.find(channel);
+- int fd;
+ if (p == channel_fds.end()) {
+ string log_file = channels.get_log_file(channel);
+ dout(20) << __func__ << " logging for channel '" << channel
+ << "' to file '" << log_file << "'" << dendl;
+- if (log_file.empty()) {
+- // do not log this channel
+- fd = -1;
+- } else {
++ if (!log_file.empty()) {
+ fd = ::open(log_file.c_str(), O_WRONLY|O_APPEND|O_CREAT|O_CLOEXEC, 0600);
+ if (fd < 0) {
+ int err = -errno;
+@@ -413,11 +408,12 @@ void LogMonitor::log_external(const LogEntry& le)
+ } else {
+ fd = p->second;
+ }
++ }
++ if (do_stderr || fd >= 0) {
++ fmt::format_to(std::back_inserter(log_buffer), "{}\n", le);
+
+ if (fd >= 0) {
+- fmt::format_to(std::back_inserter(file_log_buffer), "{}\n", le);
+- int err = safe_write(fd, file_log_buffer.data(), file_log_buffer.size());
+- file_log_buffer.clear();
++ int err = safe_write(fd, log_buffer.data(), log_buffer.size());
+ if (err < 0) {
+ dout(1) << "error writing to '" << channels.get_log_file(channel)
+ << "' for channel '" << channel
+@@ -426,6 +422,12 @@ void LogMonitor::log_external(const LogEntry& le)
+ channel_fds.erase(channel);
+ }
+ }
++
++ if (do_stderr) {
++ fmt::print(std::cerr, "{} {}", channel, std::string_view(log_buffer.data(), log_buffer.size()));
++ }
++
++ log_buffer.clear();
+ }
+ }
+
+diff --git a/src/mon/LogMonitor.h b/src/mon/LogMonitor.h
+index f6b433096e45a..1eccaa5c20379 100644
+--- a/src/mon/LogMonitor.h
++++ b/src/mon/LogMonitor.h
+@@ -51,7 +51,7 @@ class LogMonitor : public PaxosService,
+ version_t external_log_to = 0;
+ std::map<std::string, int> channel_fds;
+
+- fmt::memory_buffer file_log_buffer;
++ fmt::memory_buffer log_buffer;
+ std::atomic<bool> log_rotated = false;
+
+ struct log_channel_info {