]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common: send SYSLOG_IDENTIFIER to journald 40640/head
author胡玮文 <huww98@outlook.com>
Wed, 12 May 2021 01:58:23 +0000 (09:58 +0800)
committer胡玮文 <huww98@outlook.com>
Wed, 12 May 2021 02:03:00 +0000 (10:03 +0800)
Follow libsystemd, and avoid requiring journald to look it up every time
forwarding logs to syslog.

Signed-off-by: 胡玮文 <huww98@outlook.com>
src/common/Journald.cc

index ba3a84c06c52a2dedb2fcb8b0f0127899d7e276e..590030e386de2d0b468ed99aad64e2162f20eaa9 100644 (file)
@@ -72,9 +72,17 @@ class EntryEncoderBase {
  public:
   EntryEncoderBase():
     m_msg_vec {
-      {}, {}, { (char *)"\n", 1 },
-    } 
+     {}, {}, {}, { (char *)"\n", 1 },
+    }
   {
+    std::string id = program_invocation_short_name;
+    for (auto& c : id) {
+      if (c == '\n')
+        c = '_';
+    }
+    static_segment = "SYSLOG_IDENTIFIER=" + id + "\n";
+    m_msg_vec[0].iov_base = static_segment.data();
+    m_msg_vec[0].iov_len = static_segment.size();
   }
 
   constexpr struct iovec *iovec() { return this->m_msg_vec; }
@@ -83,9 +91,15 @@ class EntryEncoderBase {
     return sizeof(m_msg_vec) / sizeof(m_msg_vec[0]);
   }
 
+ private:
+  struct iovec m_msg_vec[4];
+  std::string static_segment;
+
  protected:
   fmt::memory_buffer meta_buf;
-  struct iovec m_msg_vec[3];
+
+  struct iovec &meta_vec() { return m_msg_vec[1]; }
+  struct iovec &msg_vec() { return m_msg_vec[2]; }
 };
 
 class EntryEncoder : public EntryEncoderBase {
@@ -111,11 +125,11 @@ MESSAGE
     meta_buf.resize(meta_buf.size() + sizeof(msg_len));
     *(reinterpret_cast<uint64_t*>(meta_buf.end()) - 1) = htole64(e.size());
 
-    m_msg_vec[0].iov_base = meta_buf.data();
-    m_msg_vec[0].iov_len = meta_buf.size();
+    meta_vec().iov_base = meta_buf.data();
+    meta_vec().iov_len = meta_buf.size();
 
-    m_msg_vec[1].iov_base = (void *)e.strv().data();
-    m_msg_vec[1].iov_len = e.size();
+    msg_vec().iov_base = (void *)e.strv().data();
+    msg_vec().iov_len = e.size();
   }
 };
 
@@ -144,11 +158,11 @@ MESSAGE
     meta_buf.resize(meta_buf.size() + sizeof(msg_len));
     *(reinterpret_cast<uint64_t*>(meta_buf.end()) - 1) = htole64(le.msg.size());
 
-    m_msg_vec[0].iov_base = meta_buf.data();
-    m_msg_vec[0].iov_len = meta_buf.size();
+    meta_vec().iov_base = meta_buf.data();
+    meta_vec().iov_len = meta_buf.size();
 
-    m_msg_vec[1].iov_base = (void *)le.msg.data();
-    m_msg_vec[1].iov_len = le.msg.size();
+    msg_vec().iov_base = (void *)le.msg.data();
+    msg_vec().iov_len = le.msg.size();
   }
 };