]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/common: move log macros to log.h from os/seastore/logging.h
authorSamuel Just <sjust@redhat.com>
Wed, 25 Jan 2023 04:53:54 +0000 (04:53 +0000)
committerSamuel Just <sjust@redhat.com>
Sat, 28 Jan 2023 01:20:44 +0000 (01:20 +0000)
These have been handy in imposing uniformity on seastore logging,
let's start using them in PG/OSD code.

Signed-off-by: Samuel Just <sjust@redhat.com>
src/common/dout.h
src/crimson/common/log.h
src/crimson/os/seastore/logging.h

index 87ff79c3be0f0bec5888605e6279e0e2fea7a7b4..4cd60efff8fef18f01a4be7352b5c4393b444496 100644 (file)
@@ -52,6 +52,14 @@ public:
   virtual ~DoutPrefixProvider() {}
 };
 
+inline std::ostream &operator<<(
+  std::ostream &lhs, const DoutPrefixProvider &dpp) {
+  return dpp.gen_prefix(lhs);
+}
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<DoutPrefixProvider> : fmt::ostream_formatter {};
+#endif
+
 // a prefix provider with empty prefix
 class NoDoutPrefix : public DoutPrefixProvider {
   CephContext *const cct;
index 1362869bb589bbcc7809b8284efb3c7e49e2a945..86c3c17fc79caad61a46f0fa6004319f4402ebab 100644 (file)
@@ -3,7 +3,9 @@
 
 #pragma once
 
+#include <fmt/format.h>
 #include <seastar/util/log.hh>
+
 #include "common/subsys_types.h"
 
 namespace crimson {
@@ -22,3 +24,65 @@ static inline seastar::log_level to_log_level(int level) {
   }
 }
 }
+
+/* Logging convenience macros
+ *
+ * The intention here is to standardize prefixing log lines with the function name
+ * and a context prefix (like the operator<< for the PG).  Place
+ *
+ * SET_SUBSYS(osd);
+ *
+ * at the top of the file to declare the log lines within the file as being (in this case)
+ * in the osd subsys.  At the beginning of each method/function, add
+ *
+ * LOG_PREFIX(Class::method_name)
+ *
+ * to set the FNAME symbol to Class::method_name.  In order to use the log macros
+ * within lambdas, capture FNAME by value.
+ *
+ * Log lines can then be declared using the appropriate macro below.
+ */
+
+#define SET_SUBSYS(subname_) static constexpr auto SOURCE_SUBSYS = ceph_subsys_##subname_
+#define LOCAL_LOGGER crimson::get_logger(SOURCE_SUBSYS)
+#define LOGGER(subname_) crimson::get_logger(ceph_subsys_##subname_)
+#define LOG_PREFIX(x) constexpr auto FNAME = #x
+
+#define LOG(level_, MSG, ...) \
+  LOCAL_LOGGER.log(level_, "{}: " MSG, FNAME , ##__VA_ARGS__)
+#define SUBLOG(subname_, level_, MSG, ...) \
+  LOGGER(subname_).log(level_, "{}: " MSG, FNAME , ##__VA_ARGS__)
+
+#define TRACE(...) LOG(seastar::log_level::trace, __VA_ARGS__)
+#define SUBTRACE(subname_, ...) SUBLOG(subname_, seastar::log_level::trace, __VA_ARGS__)
+
+#define DEBUG(...) LOG(seastar::log_level::debug, __VA_ARGS__)
+#define SUBDEBUG(subname_, ...) SUBLOG(subname_, seastar::log_level::debug, __VA_ARGS__)
+
+#define INFO(...) LOG(seastar::log_level::info, __VA_ARGS__)
+#define SUBINFO(subname_, ...) SUBLOG(subname_, seastar::log_level::info, __VA_ARGS__)
+
+#define WARN(...) LOG(seastar::log_level::warn, __VA_ARGS__)
+#define SUBWARN(subname_, ...) SUBLOG(subname_, seastar::log_level::warn, __VA_ARGS__)
+
+#define ERROR(...) LOG(seastar::log_level::error, __VA_ARGS__)
+#define SUBERROR(subname_, ...) SUBLOG(subname_, seastar::log_level::error, __VA_ARGS__)
+
+// *DPP macros are intended to take DoutPrefixProvider implementations, but anything with
+// an operator<< will work as a prefix
+
+#define SUBLOGDPP(subname_, level_, MSG, dpp, ...) \
+  LOGGER(subname_).log(level_, "{} {}: " MSG, dpp, FNAME , ##__VA_ARGS__)
+#define SUBTRACEDPP(subname_, ...) SUBLOGDPP(subname_, seastar::log_level::trace, __VA_ARGS__)
+#define SUBDEBUGDPP(subname_, ...) SUBLOGDPP(subname_, seastar::log_level::debug, __VA_ARGS__)
+#define SUBINFODPP(subname_, ...) SUBLOGDPP(subname_, seastar::log_level::info, __VA_ARGS__)
+#define SUBWARNDPP(subname_, ...) SUBLOGDPP(subname_, seastar::log_level::warn, __VA_ARGS__)
+#define SUBERRORDPP(subname_, ...) SUBLOGDPP(subname_, seastar::log_level::error, __VA_ARGS__)
+
+#define LOGDPP(level_, MSG, dpp, ...) \
+  LOCAL_LOGGER.log(level_, "{} {}: " MSG, dpp, FNAME , ##__VA_ARGS__)
+#define TRACEDPP(...) LOGDPP(seastar::log_level::trace, __VA_ARGS__)
+#define DEBUGDPP(...) LOGDPP(seastar::log_level::trace, __VA_ARGS__)
+#define INFODPP(...) LOGDPP(seastar::log_level::trace, __VA_ARGS__)
+#define WARNDPP(...) LOGDPP(seastar::log_level::trace, __VA_ARGS__)
+#define ERRORDPP(...) LOGDPP(seastar::log_level::trace, __VA_ARGS__)
index a5df4c9797568e04d50c2ef4500c8d148e3c915d..ec9b7df5ed181119b8ef4d92e55e30094027c8f3 100644 (file)
@@ -7,41 +7,22 @@
 
 #include "crimson/common/log.h"
 
-#define SET_SUBSYS(subname_) static constexpr auto SOURCE_SUBSYS = ceph_subsys_##subname_
-#define LOCAL_LOGGER crimson::get_logger(SOURCE_SUBSYS)
-#define LOGGER(subname_) crimson::get_logger(ceph_subsys_##subname_)
-#define LOG_PREFIX(x) constexpr auto FNAME = #x
-
-#define LOG(level_, MSG, ...) \
-  LOCAL_LOGGER.log(level_, "{}: " MSG, FNAME , ##__VA_ARGS__)
 #define LOGT(level_, MSG, t, ...) \
   LOCAL_LOGGER.log(level_, "{} {}: " MSG, (void*)&t, FNAME , ##__VA_ARGS__)
-#define SUBLOG(subname_, level_, MSG, ...) \
-  LOGGER(subname_).log(level_, "{}: " MSG, FNAME , ##__VA_ARGS__)
 #define SUBLOGT(subname_, level_, MSG, t, ...) \
   LOGGER(subname_).log(level_, "{} {}: " MSG, (void*)&t, FNAME , ##__VA_ARGS__)
 
-#define TRACE(...) LOG(seastar::log_level::trace, __VA_ARGS__)
 #define TRACET(...) LOGT(seastar::log_level::trace, __VA_ARGS__)
-#define SUBTRACE(subname_, ...) SUBLOG(subname_, seastar::log_level::trace, __VA_ARGS__)
 #define SUBTRACET(subname_, ...) SUBLOGT(subname_, seastar::log_level::trace, __VA_ARGS__)
 
-#define DEBUG(...) LOG(seastar::log_level::debug, __VA_ARGS__)
 #define DEBUGT(...) LOGT(seastar::log_level::debug, __VA_ARGS__)
-#define SUBDEBUG(subname_, ...) SUBLOG(subname_, seastar::log_level::debug, __VA_ARGS__)
 #define SUBDEBUGT(subname_, ...) SUBLOGT(subname_, seastar::log_level::debug, __VA_ARGS__)
 
-#define INFO(...) LOG(seastar::log_level::info, __VA_ARGS__)
 #define INFOT(...) LOGT(seastar::log_level::info, __VA_ARGS__)
-#define SUBINFO(subname_, ...) SUBLOG(subname_, seastar::log_level::info, __VA_ARGS__)
 #define SUBINFOT(subname_, ...) SUBLOGT(subname_, seastar::log_level::info, __VA_ARGS__)
 
-#define WARN(...) LOG(seastar::log_level::warn, __VA_ARGS__)
 #define WARNT(...) LOGT(seastar::log_level::warn, __VA_ARGS__)
-#define SUBWARN(subname_, ...) SUBLOG(subname_, seastar::log_level::warn, __VA_ARGS__)
 #define SUBWARNT(subname_, ...) SUBLOGT(subname_, seastar::log_level::warn, __VA_ARGS__)
 
-#define ERROR(...) LOG(seastar::log_level::error, __VA_ARGS__)
 #define ERRORT(...) LOGT(seastar::log_level::error, __VA_ARGS__)
-#define SUBERROR(subname_, ...) SUBLOG(subname_, seastar::log_level::error, __VA_ARGS__)
 #define SUBERRORT(subname_, ...) SUBLOGT(subname_, seastar::log_level::error, __VA_ARGS__)