]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Give IterLoggable the same type flexibility as Loggable. 16917/head
authorMiod Vallat <miod.vallat@powerdns.com>
Fri, 20 Feb 2026 09:22:43 +0000 (10:22 +0100)
committerMiod Vallat <miod.vallat@powerdns.com>
Fri, 20 Feb 2026 09:25:48 +0000 (10:25 +0100)
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
pdns/logging.hh

index bb874dafce28b14b19ffb8dc23a59c895175fe21..7902d3a6d0d5ff8b160d135bc7233e7ba15ab212 100644 (file)
@@ -154,7 +154,24 @@ struct IterLoggable : public Logr::Loggable
       else {
         first = false;
       }
-      oss << *i;
+      if constexpr (std::is_same_v<typename T::value_type, std::string>) {
+        oss << *i;
+      }
+      else if constexpr (is_toStructuredLogString_available<typename T::value_type>::value) {
+        oss << i->toStructuredLogString();
+      }
+      else if constexpr (is_toLogString_available<typename T::value_type>::value) {
+        oss << i->toLogString();
+      }
+      else if constexpr (is_toString_available<typename T::value_type>::value) {
+        oss << i->toString();
+      }
+      else if constexpr (is_to_string_available<typename T::value_type>::value) {
+        oss << std::to_string(*i);
+      }
+      else {
+        oss << *i;
+      }
     }
     return oss.str();
   }