sink.ctf.fs: use bt2c::Logger
authorSimon Marchi <simon.marchi@efficios.com>
Wed, 3 Apr 2024 19:34:14 +0000 (15:34 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Wed, 17 Apr 2024 17:57:53 +0000 (13:57 -0400)
Use `bt2c::Logger` throughout the `sink.ctf.fs` code.

When printing C strings that may be NULL (e.g. result of
`bt_trace_get_name()`), we currently rely on glibc printf's behavior of
printing `(null)` when passed a NULL pointer for `%s`.  {fmt} doesn't
accept a nullptr `const char *`.  Add the `bt2c::maybeNull()` function
to emulate the existing behavior.

Change-Id: I6ab259c8db526a3b4c0de9295a4360180c56b398
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12241
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
src/cpp-common/bt2c/logging.hpp
src/plugins/ctf/fs-sink/fs-sink-stream.cpp
src/plugins/ctf/fs-sink/fs-sink-stream.hpp
src/plugins/ctf/fs-sink/fs-sink-trace.cpp
src/plugins/ctf/fs-sink/fs-sink-trace.hpp
src/plugins/ctf/fs-sink/fs-sink.cpp
src/plugins/ctf/fs-sink/fs-sink.hpp
src/plugins/ctf/fs-sink/translate-trace-ir-to-ctf-ir.cpp

index 274c2fae51082b0ed0e9d406448b9d1141397a28..df5cb494d9d50b127feeeac32e9a4386fd662a06 100644 (file)
@@ -593,6 +593,14 @@ private:
     mutable std::vector<char> _mBuf;
 };
 
+/*
+ * Returns `s` if it's not `nullptr`, or the `(null)` string otherwise.
+ */
+inline const char *maybeNull(const char * const s) noexcept
+{
+    return s ? s : "(null)";
+}
+
 } /* namespace bt2c */
 
 /* Internal: default logger name */
index 9ab71b257aecd2c51d6a3845ba61482cc67a09c2..e070e435aa5c4233c4979ae24f13e297a1a14c90 100644 (file)
@@ -9,11 +9,6 @@
 
 #include <babeltrace2/babeltrace.h>
 
-#define BT_COMP_LOG_SELF_COMP (stream->trace->fs_sink->self_comp)
-#define BT_LOG_OUTPUT_LEVEL   (stream->log_level)
-#define BT_LOG_TAG            "PLUGIN/SINK.CTF.FS/STREAM"
-#include "logging/comp-logging.h"
-
 #include "common/assert.h"
 #include "compat/endian.h" /* IWYU pragma: keep  */
 #include "ctfser/ctfser.h"
@@ -21,7 +16,6 @@
 #include "fs-sink-ctf-meta.hpp"
 #include "fs-sink-stream.hpp"
 #include "fs-sink-trace.hpp"
-#include "fs-sink.hpp"
 #include "translate-trace-ir-to-ctf-ir.hpp"
 
 void fs_sink_stream_destroy(struct fs_sink_stream *stream)
@@ -124,11 +118,10 @@ static void set_stream_file_name(struct fs_sink_stream *stream)
 struct fs_sink_stream *fs_sink_stream_create(struct fs_sink_trace *trace,
                                              const bt_stream *ir_stream)
 {
-    fs_sink_stream *stream = new fs_sink_stream;
+    fs_sink_stream *stream = new fs_sink_stream {trace->logger};
     int ret;
     GString *path = g_string_new(trace->path->str);
 
-    stream->log_level = trace->log_level;
     stream->trace = trace;
     stream->ir_stream = ir_stream;
     stream->packet_state.beginning_cs = UINT64_C(-1);
@@ -144,7 +137,7 @@ struct fs_sink_stream *fs_sink_stream_create(struct fs_sink_trace *trace,
 
     set_stream_file_name(stream);
     g_string_append_printf(path, "/%s", stream->file_name->str);
-    ret = bt_ctfser_init(&stream->ctfser, path->str, stream->log_level);
+    ret = bt_ctfser_init(&stream->ctfser, path->str, static_cast<int>(stream->logger.level()));
     if (ret) {
         goto error;
     }
@@ -570,8 +563,8 @@ int fs_sink_stream_open_packet(struct fs_sink_stream *stream, const bt_clock_sna
     ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, UINT64_C(0xc1fc1fc1), 8, 32,
                                                     BYTE_ORDER);
     if (ret) {
-        BT_COMP_LOGE("Error writing packet header magic: stream-file-name=%s",
-                     stream->file_name->str);
+        BT_CPPLOGE_SPEC(stream->logger, "Error writing packet header magic: stream-file-name={}",
+                        stream->file_name->str);
         goto end;
     }
 
@@ -580,8 +573,8 @@ int fs_sink_stream_open_packet(struct fs_sink_stream *stream, const bt_clock_sna
         ret = bt_ctfser_write_byte_aligned_unsigned_int(
             &stream->ctfser, (uint64_t) stream->sc->trace->uuid[i], 8, 8, BYTE_ORDER);
         if (ret) {
-            BT_COMP_LOGE("Error writing packet header UUID: stream-file-name=%s",
-                         stream->file_name->str);
+            BT_CPPLOGE_SPEC(stream->logger, "Error writing packet header UUID: stream-file-name={}",
+                            stream->file_name->str);
             goto end;
         }
     }
@@ -590,9 +583,10 @@ int fs_sink_stream_open_packet(struct fs_sink_stream *stream, const bt_clock_sna
     ret = bt_ctfser_write_byte_aligned_unsigned_int(
         &stream->ctfser, bt_stream_class_get_id(stream->sc->ir_sc), 8, 64, BYTE_ORDER);
     if (ret) {
-        BT_COMP_LOGE("Error writing packet header stream class id: "
-                     "stream-file-name=%s, stream-class-id=%" PRIu64,
-                     stream->file_name->str, bt_stream_class_get_id(stream->sc->ir_sc));
+        BT_CPPLOGE_SPEC(stream->logger,
+                        "Error writing packet header stream class id: "
+                        "stream-file-name={}, stream-class-id={}",
+                        stream->file_name->str, bt_stream_class_get_id(stream->sc->ir_sc));
         goto end;
     }
 
@@ -600,9 +594,10 @@ int fs_sink_stream_open_packet(struct fs_sink_stream *stream, const bt_clock_sna
     ret = bt_ctfser_write_byte_aligned_unsigned_int(
         &stream->ctfser, bt_stream_get_id(stream->ir_stream), 8, 64, BYTE_ORDER);
     if (ret) {
-        BT_COMP_LOGE("Error writing packet header stream id: "
-                     "stream-file-name=%s, stream-id=%" PRIu64,
-                     stream->file_name->str, bt_stream_get_id(stream->ir_stream));
+        BT_CPPLOGE_SPEC(stream->logger,
+                        "Error writing packet header stream id: "
+                        "stream-file-name={}, stream-id={}",
+                        stream->file_name->str, bt_stream_get_id(stream->ir_stream));
         goto end;
     }
 
index 8344666aa4bdc1e7ddeeecb57c0c3a28c4901f7b..8c309525c5619f55b1643cc5c148cadb9c8f3781 100644 (file)
@@ -12,6 +12,7 @@
 
 #include <babeltrace2/babeltrace.h>
 
+#include "cpp-common/bt2c/logging.hpp"
 #include "ctfser/ctfser.h"
 
 struct fs_sink_trace;
@@ -19,7 +20,12 @@ struct fs_sink_ctf_stream_class;
 
 struct fs_sink_stream
 {
-    bt_logging_level log_level = BT_LOGGING_LEVEL_NONE;
+    explicit fs_sink_stream(const bt2c::Logger& parentLogger) :
+        logger {parentLogger, "PLUGIN/SINK.CTF.FS/STREAM"}
+    {
+    }
+
+    bt2c::Logger logger;
     fs_sink_trace *trace = nullptr;
     bt_ctfser ctfser {};
 
index 295ec2bc936ee3326c022b7ecaac7b96c56ea87a..79d4839ab85e637140cd163bd837b7c0d9741625 100644 (file)
@@ -9,11 +9,6 @@
 
 #include <babeltrace2/babeltrace.h>
 
-#define BT_COMP_LOG_SELF_COMP (trace->fs_sink->self_comp)
-#define BT_LOG_OUTPUT_LEVEL   (trace->log_level)
-#define BT_LOG_TAG            "PLUGIN/SINK.CTF.FS/TRACE"
-#include "logging/comp-logging.h"
-
 #include "common/assert.h"
 
 #include "fs-sink-ctf-meta.hpp"
@@ -141,7 +136,8 @@ static int lttng_validate_datetime(const struct fs_sink_trace *trace, const char
      * the format.
      */
     if (!g_time_val_from_iso8601(datetime, &tv)) {
-        BT_COMP_LOGI("Couldn't parse datetime as ISO 8601: date=\"%s\"", datetime);
+        BT_CPPLOGI_SPEC(trace->logger, "Couldn't parse datetime as ISO 8601: date=\"{}\"",
+                        datetime);
         goto end;
     }
 
@@ -161,7 +157,8 @@ static int append_lttng_trace_path_ust_uid(const struct fs_sink_trace *trace, GS
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(tc, "tracer_buffering_id");
     if (!v || !bt_value_is_signed_integer(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_buffering_id\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger,
+                            "Couldn't get environment value: name=\"tracer_buffering_id\"");
         goto error;
     }
 
@@ -169,7 +166,8 @@ static int append_lttng_trace_path_ust_uid(const struct fs_sink_trace *trace, GS
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(tc, "architecture_bit_width");
     if (!v || !bt_value_is_signed_integer(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"architecture_bit_width\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger,
+                            "Couldn't get environment value: name=\"architecture_bit_width\"");
         goto error;
     }
 
@@ -195,7 +193,7 @@ static int append_lttng_trace_path_ust_pid(const struct fs_sink_trace *trace, GS
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(tc, "procname");
     if (!v || !bt_value_is_string(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"procname\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger, "Couldn't get environment value: name=\"procname\"");
         goto error;
     }
 
@@ -203,7 +201,7 @@ static int append_lttng_trace_path_ust_pid(const struct fs_sink_trace *trace, GS
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(tc, "vpid");
     if (!v || !bt_value_is_signed_integer(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"vpid\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger, "Couldn't get environment value: name=\"vpid\"");
         goto error;
     }
 
@@ -211,7 +209,8 @@ static int append_lttng_trace_path_ust_pid(const struct fs_sink_trace *trace, GS
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(tc, "vpid_datetime");
     if (!v || !bt_value_is_string(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"vpid_datetime\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger,
+                            "Couldn't get environment value: name=\"vpid_datetime\"");
         goto error;
     }
 
@@ -251,20 +250,20 @@ static GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(trace->ir_trace, "tracer_name");
     if (!v || !bt_value_is_string(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_name\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger, "Couldn't get environment value: name=\"tracer_name\"");
         goto error;
     }
 
     tracer_name = bt_value_string_get(v);
 
     if (!g_str_equal(tracer_name, "lttng-ust") && !g_str_equal(tracer_name, "lttng-modules")) {
-        BT_COMP_LOGI("Unrecognized tracer name: name=\"%s\"", tracer_name);
+        BT_CPPLOGI_SPEC(trace->logger, "Unrecognized tracer name: name=\"{}\"", tracer_name);
         goto error;
     }
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(trace->ir_trace, "tracer_major");
     if (!v || !bt_value_is_signed_integer(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_major\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger, "Couldn't get environment value: name=\"tracer_major\"");
         goto error;
     }
 
@@ -272,22 +271,23 @@ static GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(trace->ir_trace, "tracer_minor");
     if (!v || !bt_value_is_signed_integer(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_minor\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger, "Couldn't get environment value: name=\"tracer_minor\"");
         goto error;
     }
 
     tracer_minor = bt_value_integer_signed_get(v);
 
     if (!(tracer_major >= 3 || (tracer_major == 2 && tracer_minor >= 11))) {
-        BT_COMP_LOGI("Unsupported LTTng version for automatic trace path: major=%" PRId64
-                     ", minor=%" PRId64,
-                     tracer_major, tracer_minor);
+        BT_CPPLOGI_SPEC(trace->logger,
+                        "Unsupported LTTng version for automatic trace path: major={}, minor={}",
+                        tracer_major, tracer_minor);
         goto error;
     }
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(trace->ir_trace, "hostname");
     if (!v || !bt_value_is_string(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_hostname\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger,
+                            "Couldn't get environment value: name=\"tracer_hostname\"");
         goto error;
     }
 
@@ -295,7 +295,7 @@ static GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(trace->ir_trace, "trace_name");
     if (!v || !bt_value_is_string(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"trace_name\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger, "Couldn't get environment value: name=\"trace_name\"");
         goto error;
     }
 
@@ -304,7 +304,8 @@ static GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
     v = bt_trace_borrow_environment_entry_value_by_name_const(trace->ir_trace,
                                                               "trace_creation_datetime");
     if (!v || !bt_value_is_string(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"trace_creation_datetime\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger,
+                            "Couldn't get environment value: name=\"trace_creation_datetime\"");
         goto error;
     }
 
@@ -318,7 +319,7 @@ static GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
     v = bt_trace_borrow_environment_entry_value_by_name_const(trace->ir_trace, "domain");
     if (!v || !bt_value_is_string(v)) {
-        BT_COMP_LOGI_STR("Couldn't get environment value: name=\"domain\"");
+        BT_CPPLOGI_STR_SPEC(trace->logger, "Couldn't get environment value: name=\"domain\"");
         goto error;
     }
 
@@ -331,7 +332,8 @@ static GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
         v = bt_trace_borrow_environment_entry_value_by_name_const(trace->ir_trace,
                                                                   "tracer_buffering_scheme");
         if (!v || !bt_value_is_string(v)) {
-            BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_buffering_scheme\"");
+            BT_CPPLOGI_STR_SPEC(trace->logger,
+                                "Couldn't get environment value: name=\"tracer_buffering_scheme\"");
             goto error;
         }
 
@@ -348,13 +350,14 @@ static GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
             }
         } else {
             /* Unknown buffering scheme. */
-            BT_COMP_LOGI("Unknown buffering scheme: tracer_buffering_scheme=\"%s\"",
-                         tracer_buffering_scheme);
+            BT_CPPLOGI_SPEC(trace->logger,
+                            "Unknown buffering scheme: tracer_buffering_scheme=\"{}\"",
+                            tracer_buffering_scheme);
             goto error;
         }
     } else if (!g_str_equal(domain, "kernel")) {
         /* Unknown domain. */
-        BT_COMP_LOGI("Unknown domain: domain=\"%s\"", domain);
+        BT_CPPLOGI_SPEC(trace->logger, "Unknown domain: domain=\"{}\"", domain);
         goto error;
     }
 
@@ -488,17 +491,19 @@ void fs_sink_trace_destroy(struct fs_sink_trace *trace)
     BT_ASSERT(trace->metadata_path);
     fh = fopen(trace->metadata_path->str, "wb");
     if (!fh) {
-        BT_COMP_LOGF_ERRNO("In trace destruction listener: "
-                           "cannot open metadata file for writing",
-                           ": path=\"%s\"", trace->metadata_path->str);
+        BT_CPPLOGF_ERRNO_SPEC(trace->logger,
+                              "In trace destruction listener: "
+                              "cannot open metadata file for writing",
+                              ": path=\"{}\"", trace->metadata_path->str);
         bt_common_abort();
     }
 
     len = fwrite(tsdl->str, sizeof(*tsdl->str), tsdl->len, fh);
     if (len != tsdl->len) {
-        BT_COMP_LOGF_ERRNO("In trace destruction listener: "
-                           "cannot write metadata file",
-                           ": path=\"%s\"", trace->metadata_path->str);
+        BT_CPPLOGF_ERRNO_SPEC(trace->logger,
+                              "In trace destruction listener: "
+                              "cannot write metadata file",
+                              ": path=\"{}\"", trace->metadata_path->str);
         bt_common_abort();
     }
 
@@ -515,9 +520,10 @@ void fs_sink_trace_destroy(struct fs_sink_trace *trace)
         int ret = fclose(fh);
 
         if (ret != 0) {
-            BT_COMP_LOGW_ERRNO("In trace destruction listener: "
-                               "cannot close metadata file",
-                               ": path=\"%s\"", trace->metadata_path->str);
+            BT_CPPLOGW_ERRNO_SPEC(trace->logger,
+                                  "In trace destruction listener: "
+                                  "cannot close metadata file",
+                                  ": path=\"{}\"", trace->metadata_path->str);
         }
     }
 
@@ -550,10 +556,9 @@ static void ir_trace_destruction_listener(const bt_trace *ir_trace, void *data)
 struct fs_sink_trace *fs_sink_trace_create(struct fs_sink_comp *fs_sink, const bt_trace *ir_trace)
 {
     int ret;
-    fs_sink_trace *trace = new fs_sink_trace;
+    fs_sink_trace *trace = new fs_sink_trace {fs_sink->logger};
     bt_trace_add_listener_status trace_status;
 
-    trace->log_level = fs_sink->log_level;
     trace->fs_sink = fs_sink;
     trace->ir_trace = ir_trace;
     trace->ir_trace_destruction_listener_id = UINT64_C(-1);
@@ -566,8 +571,8 @@ struct fs_sink_trace *fs_sink_trace_create(struct fs_sink_comp *fs_sink, const b
     BT_ASSERT(trace->path);
     ret = g_mkdir_with_parents(trace->path->str, 0755);
     if (ret) {
-        BT_COMP_LOGE_ERRNO("Cannot create directories for trace directory", ": path=\"%s\"",
-                           trace->path->str);
+        BT_CPPLOGE_ERRNO_SPEC(trace->logger, "Cannot create directories for trace directory",
+                              ": path=\"{}\"", trace->path->str);
         goto error;
     }
 
index a85966ca84ee53d7b78f16bd580465d4acbc3b9e..c9b164367f46158d4fde85f78176754cbad3acbc 100644 (file)
 
 #include <babeltrace2/babeltrace.h>
 
+#include "cpp-common/bt2c/logging.hpp"
+
 struct fs_sink_comp;
 struct fs_sink_ctf_trace;
 
 struct fs_sink_trace
 {
-    bt_logging_level log_level = BT_LOGGING_LEVEL_NONE;
+    explicit fs_sink_trace(const bt2c::Logger& parentLogger) :
+        logger {parentLogger, "PLUGIN/SINK.CTF.FS/TRACE"}
+    {
+    }
+
+    bt2c::Logger logger;
     fs_sink_comp *fs_sink = nullptr;
 
     /* Owned by this */
index 39d4ff43848a0d7e2d9ddd3c94f0b66730e8bc3f..c6d5029c995fb0fc6ace4534643af2d3ef90d453 100644 (file)
@@ -9,12 +9,8 @@
 
 #include <babeltrace2/babeltrace.h>
 
-#define BT_COMP_LOG_SELF_COMP (fs_sink->self_comp)
-#define BT_LOG_OUTPUT_LEVEL   (fs_sink->log_level)
-#define BT_LOG_TAG            "PLUGIN/SINK.CTF.FS"
-#include "logging/comp-logging.h"
-
 #include "common/assert.h"
+#include "cpp-common/vendor/fmt/format.h"
 #include "ctfser/ctfser.h"
 
 #include "plugins/common/param-validation/param-validation.h"
@@ -36,9 +32,9 @@ ensure_output_dir_exists(struct fs_sink_comp *fs_sink)
 
     ret = g_mkdir_with_parents(fs_sink->output_dir_path->str, 0755);
     if (ret) {
-        BT_COMP_LOGE_APPEND_CAUSE_ERRNO(fs_sink->self_comp,
-                                        "Cannot create directories for output directory",
-                                        ": output-dir-path=\"%s\"", fs_sink->output_dir_path->str);
+        BT_CPPLOGE_ERRNO_APPEND_CAUSE_SPEC(
+            fs_sink->logger, "Cannot create directories for output directory",
+            ": output-dir-path=\"{}\"", fs_sink->output_dir_path->str);
         status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -72,7 +68,7 @@ static bt_component_class_initialize_method_status configure_component(struct fs
         bt_param_validation_validate(params, fs_sink_params_descr, &validation_error);
     if (validation_status == BT_PARAM_VALIDATION_STATUS_VALIDATION_ERROR) {
         status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR;
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "%s", validation_error);
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "{}", validation_error);
         goto end;
     } else if (validation_status == BT_PARAM_VALIDATION_STATUS_MEMORY_ERROR) {
         status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR;
@@ -140,12 +136,8 @@ bt_component_class_initialize_method_status ctf_fs_sink_init(bt_self_component_s
     bt_self_component_add_port_status add_port_status;
     struct fs_sink_comp *fs_sink = NULL;
     bt_self_component *self_comp = bt_self_component_sink_as_self_component(self_comp_sink);
-    bt_logging_level log_level =
-        bt_component_get_logging_level(bt_self_component_as_component(self_comp));
 
-    fs_sink = new fs_sink_comp;
-    fs_sink->log_level = log_level;
-    fs_sink->self_comp = self_comp;
+    fs_sink = new fs_sink_comp {bt2::SelfSinkComponent {self_comp_sink}};
     fs_sink->output_dir_path = g_string_new(NULL);
     status = configure_component(fs_sink, params);
     if (status != BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_OK) {
@@ -155,9 +147,9 @@ bt_component_class_initialize_method_status ctf_fs_sink_init(bt_self_component_s
 
     if (fs_sink->assume_single_trace &&
         g_file_test(fs_sink->output_dir_path->str, G_FILE_TEST_EXISTS)) {
-        BT_COMP_LOGE_APPEND_CAUSE(self_comp,
-                                  "Single trace mode, but output path exists: output-path=\"%s\"",
-                                  fs_sink->output_dir_path->str);
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(
+            fs_sink->logger, "Single trace mode, but output path exists: output-path=\"{}\"",
+            fs_sink->output_dir_path->str);
         status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -171,7 +163,7 @@ bt_component_class_initialize_method_status ctf_fs_sink_init(bt_self_component_s
     fs_sink->traces = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL,
                                             (GDestroyNotify) fs_sink_trace_destroy);
     if (!fs_sink->traces) {
-        BT_COMP_LOGE_APPEND_CAUSE(self_comp, "Failed to allocate one GHashTable.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to allocate one GHashTable.");
         status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR;
         goto end;
     }
@@ -180,7 +172,7 @@ bt_component_class_initialize_method_status ctf_fs_sink_init(bt_self_component_s
         bt_self_component_sink_add_input_port(self_comp_sink, in_port_name, NULL, NULL);
     if (add_port_status != BT_SELF_COMPONENT_ADD_PORT_STATUS_OK) {
         status = (bt_component_class_initialize_method_status) add_port_status;
-        BT_COMP_LOGE_APPEND_CAUSE(self_comp, "Failed to add input port.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to add input port.");
         goto end;
     }
 
@@ -204,10 +196,10 @@ static inline struct fs_sink_stream *borrow_stream(struct fs_sink_comp *fs_sink,
     trace = (fs_sink_trace *) g_hash_table_lookup(fs_sink->traces, ir_trace);
     if (G_UNLIKELY(!trace)) {
         if (fs_sink->assume_single_trace && g_hash_table_size(fs_sink->traces) > 0) {
-            BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                      "Single trace mode, but getting more than one trace: "
-                                      "stream-name=\"%s\"",
-                                      bt_stream_get_name(ir_stream));
+            BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger,
+                                         "Single trace mode, but getting more than one trace: "
+                                         "stream-name=\"{}\"",
+                                         bt2c::maybeNull(bt_stream_get_name(ir_stream)));
             goto end;
         }
 
@@ -243,7 +235,7 @@ handle_event_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
 
     stream = borrow_stream(fs_sink, ir_stream);
     if (G_UNLIKELY(!stream)) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to borrow stream.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to borrow stream.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -251,7 +243,7 @@ handle_event_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
     ret = try_translate_event_class_trace_ir_to_ctf_ir(fs_sink, stream->sc,
                                                        bt_event_borrow_class_const(ir_event), &ec);
     if (ret) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to translate event class to CTF IR.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to translate event class to CTF IR.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -281,7 +273,7 @@ handle_event_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
              */
             ret = fs_sink_stream_close_packet(stream, NULL);
             if (ret) {
-                BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to close packet.");
+                BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to close packet.");
                 status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
                 goto end;
             }
@@ -291,7 +283,7 @@ handle_event_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
             /* Stream's packet is not currently opened: open it */
             ret = fs_sink_stream_open_packet(stream, NULL, NULL);
             if (ret) {
-                BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to open packet.");
+                BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to open packet.");
                 status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
                 goto end;
             }
@@ -301,7 +293,7 @@ handle_event_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
     BT_ASSERT_DBG(stream->packet_state.is_open);
     ret = fs_sink_stream_write_event(stream, cs, ir_event, ec);
     if (G_UNLIKELY(ret)) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to write event.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to write event.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -323,7 +315,7 @@ handle_packet_beginning_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
 
     stream = borrow_stream(fs_sink, ir_stream);
     if (G_UNLIKELY(!stream)) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to borrow stream.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to borrow stream.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -373,17 +365,18 @@ handle_packet_beginning_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
         }
 
         if (stream->discarded_events_state.beginning_cs != expected_cs) {
-            BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                      "Incompatible discarded events message: "
-                                      "unexpected beginning time: "
-                                      "beginning-cs-val=%" PRIu64 ", "
-                                      "expected-beginning-cs-val=%" PRIu64 ", "
-                                      "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                                      "trace-name=\"%s\", path=\"%s/%s\"",
-                                      stream->discarded_events_state.beginning_cs, expected_cs,
-                                      bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                                      bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                                      stream->trace->path->str, stream->file_name->str);
+            BT_CPPLOGE_APPEND_CAUSE_SPEC(
+                fs_sink->logger,
+                "Incompatible discarded events message: "
+                "unexpected beginning time: "
+                "beginning-cs-val={}, "
+                "expected-beginning-cs-val={}, "
+                "stream-id={}, stream-name=\"{}\", "
+                "trace-name=\"{}\", path=\"{}/{}\"",
+                stream->discarded_events_state.beginning_cs, expected_cs,
+                bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+                bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+                stream->trace->path->str, stream->file_name->str);
             status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
             goto end;
         }
@@ -421,31 +414,32 @@ handle_packet_beginning_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
          * this case.
          */
         if (stream->prev_packet_state.end_cs == UINT64_C(-1)) {
-            BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                      "Incompatible discarded packets message "
-                                      "occurring before the stream's first packet: "
-                                      "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                                      "trace-name=\"%s\", path=\"%s/%s\"",
-                                      bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                                      bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                                      stream->trace->path->str, stream->file_name->str);
+            BT_CPPLOGE_APPEND_CAUSE_SPEC(
+                fs_sink->logger,
+                "Incompatible discarded packets message "
+                "occurring before the stream's first packet: "
+                "stream-id={}, stream-name=\"{}\", "
+                "trace-name=\"{}\", path=\"{}/{}\"",
+                bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+                bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+                stream->trace->path->str, stream->file_name->str);
             status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
             goto end;
         }
 
         if (stream->discarded_packets_state.beginning_cs != stream->prev_packet_state.end_cs) {
-            BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                      "Incompatible discarded packets message: "
-                                      "unexpected beginning time: "
-                                      "beginning-cs-val=%" PRIu64 ", "
-                                      "expected-beginning-cs-val=%" PRIu64 ", "
-                                      "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                                      "trace-name=\"%s\", path=\"%s/%s\"",
-                                      stream->discarded_packets_state.beginning_cs,
-                                      stream->prev_packet_state.end_cs, bt_stream_get_id(ir_stream),
-                                      bt_stream_get_name(ir_stream),
-                                      bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                                      stream->trace->path->str, stream->file_name->str);
+            BT_CPPLOGE_APPEND_CAUSE_SPEC(
+                fs_sink->logger,
+                "Incompatible discarded packets message: "
+                "unexpected beginning time: "
+                "beginning-cs-val={}, "
+                "expected-beginning-cs-val={}, "
+                "stream-id={}, stream-name=\"{}\", "
+                "trace-name=\"{}\", path=\"{}/{}\"",
+                stream->discarded_packets_state.beginning_cs, stream->prev_packet_state.end_cs,
+                bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+                bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+                stream->trace->path->str, stream->file_name->str);
             status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
             goto end;
         }
@@ -453,17 +447,18 @@ handle_packet_beginning_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
         expected_end_cs = bt_clock_snapshot_get_value(cs);
 
         if (stream->discarded_packets_state.end_cs != expected_end_cs) {
-            BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                      "Incompatible discarded packets message: "
-                                      "unexpected end time: "
-                                      "end-cs-val=%" PRIu64 ", "
-                                      "expected-end-cs-val=%" PRIu64 ", "
-                                      "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                                      "trace-name=\"%s\", path=\"%s/%s\"",
-                                      stream->discarded_packets_state.end_cs, expected_end_cs,
-                                      bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                                      bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                                      stream->trace->path->str, stream->file_name->str);
+            BT_CPPLOGE_APPEND_CAUSE_SPEC(
+                fs_sink->logger,
+                "Incompatible discarded packets message: "
+                "unexpected end time: "
+                "end-cs-val={}, "
+                "expected-end-cs-val={}, "
+                "stream-id={}, stream-name=\"{}\", "
+                "trace-name=\"{}\", path=\"{}/{}\"",
+                stream->discarded_packets_state.end_cs, expected_end_cs,
+                bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+                bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+                stream->trace->path->str, stream->file_name->str);
             status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
             goto end;
         }
@@ -479,7 +474,7 @@ handle_packet_beginning_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
 
     ret = fs_sink_stream_open_packet(stream, cs, ir_packet);
     if (ret) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to open packet.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to open packet.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -501,7 +496,7 @@ handle_packet_end_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
 
     stream = borrow_stream(fs_sink, ir_stream);
     if (G_UNLIKELY(!stream)) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to borrow stream.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to borrow stream.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -540,17 +535,18 @@ handle_packet_end_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
         expected_cs = bt_clock_snapshot_get_value(cs);
 
         if (stream->discarded_events_state.end_cs != expected_cs) {
-            BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                      "Incompatible discarded events message: "
-                                      "unexpected end time: "
-                                      "end-cs-val=%" PRIu64 ", "
-                                      "expected-end-cs-val=%" PRIu64 ", "
-                                      "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                                      "trace-name=\"%s\", path=\"%s/%s\"",
-                                      stream->discarded_events_state.end_cs, expected_cs,
-                                      bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                                      bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                                      stream->trace->path->str, stream->file_name->str);
+            BT_CPPLOGE_APPEND_CAUSE_SPEC(
+                fs_sink->logger,
+                "Incompatible discarded events message: "
+                "unexpected end time: "
+                "end-cs-val={}, "
+                "expected-end-cs-val={}, "
+                "stream-id={}, stream-name=\"{}\", "
+                "trace-name=\"{}\", path=\"{}/{}\"",
+                stream->discarded_events_state.end_cs, expected_cs, bt_stream_get_id(ir_stream),
+                bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+                bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+                stream->trace->path->str, stream->file_name->str);
             status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
             goto end;
         }
@@ -558,7 +554,7 @@ handle_packet_end_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
 
     ret = fs_sink_stream_close_packet(stream, cs);
     if (ret) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to close packet.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to close packet.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -596,15 +592,15 @@ handle_stream_beginning_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
         BT_ASSERT(!bt_stream_class_supports_discarded_packets(ir_sc));
 
         if (!fs_sink->ignore_discarded_events && bt_stream_class_supports_discarded_events(ir_sc)) {
-            BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                      "Unsupported stream: "
-                                      "stream does not support packets, "
-                                      "but supports discarded events: "
-                                      "stream-addr=%p, "
-                                      "stream-id=%" PRIu64 ", "
-                                      "stream-name=\"%s\"",
-                                      ir_stream, bt_stream_get_id(ir_stream),
-                                      bt_stream_get_name(ir_stream));
+            BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger,
+                                         "Unsupported stream: "
+                                         "stream does not support packets, "
+                                         "but supports discarded events: "
+                                         "stream-addr={}, "
+                                         "stream-id={}, "
+                                         "stream-name=\"{}\"",
+                                         fmt::ptr(ir_stream), bt_stream_get_id(ir_stream),
+                                         bt2c::maybeNull(bt_stream_get_name(ir_stream)));
             status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
             goto end;
         }
@@ -617,15 +613,15 @@ handle_stream_beginning_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
     if (!fs_sink->ignore_discarded_events &&
         bt_stream_class_discarded_events_have_default_clock_snapshots(ir_sc) &&
         !packets_have_beginning_end_cs) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                  "Unsupported stream: discarded events have "
-                                  "default clock snapshots, but packets have no "
-                                  "beginning and/or end default clock snapshots: "
-                                  "stream-addr=%p, "
-                                  "stream-id=%" PRIu64 ", "
-                                  "stream-name=\"%s\"",
-                                  ir_stream, bt_stream_get_id(ir_stream),
-                                  bt_stream_get_name(ir_stream));
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger,
+                                     "Unsupported stream: discarded events have "
+                                     "default clock snapshots, but packets have no "
+                                     "beginning and/or end default clock snapshots: "
+                                     "stream-addr={}, "
+                                     "stream-id={}, "
+                                     "stream-name=\"{}\"",
+                                     fmt::ptr(ir_stream), bt_stream_get_id(ir_stream),
+                                     bt2c::maybeNull(bt_stream_get_name(ir_stream)));
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -638,32 +634,33 @@ handle_stream_beginning_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
     if (!fs_sink->ignore_discarded_packets &&
         bt_stream_class_discarded_packets_have_default_clock_snapshots(ir_sc) &&
         !packets_have_beginning_end_cs) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                  "Unsupported stream: discarded packets have "
-                                  "default clock snapshots, but packets have no "
-                                  "beginning and/or end default clock snapshots: "
-                                  "stream-addr=%p, "
-                                  "stream-id=%" PRIu64 ", "
-                                  "stream-name=\"%s\"",
-                                  ir_stream, bt_stream_get_id(ir_stream),
-                                  bt_stream_get_name(ir_stream));
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger,
+                                     "Unsupported stream: discarded packets have "
+                                     "default clock snapshots, but packets have no "
+                                     "beginning and/or end default clock snapshots: "
+                                     "stream-addr={}, "
+                                     "stream-id={}, "
+                                     "stream-name=\"{}\"",
+                                     fmt::ptr(ir_stream), bt_stream_get_id(ir_stream),
+                                     bt2c::maybeNull(bt_stream_get_name(ir_stream)));
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
 
     stream = borrow_stream(fs_sink, ir_stream);
     if (!stream) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to borrow stream.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to borrow stream.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
 
-    BT_COMP_LOGI("Created new, empty stream file: "
-                 "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                 "trace-name=\"%s\", path=\"%s/%s\"",
-                 bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                 bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                 stream->trace->path->str, stream->file_name->str);
+    BT_CPPLOGI_SPEC(fs_sink->logger,
+                    "Created new, empty stream file: "
+                    "stream-id={}, stream-name=\"{}\", "
+                    "trace-name=\"{}\", path=\"{}/{}\"",
+                    bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+                    bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+                    stream->trace->path->str, stream->file_name->str);
 
 end:
     return status;
@@ -679,7 +676,7 @@ handle_stream_end_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
 
     stream = borrow_stream(fs_sink, ir_stream);
     if (!stream) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to borrow stream.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to borrow stream.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -689,18 +686,19 @@ handle_stream_end_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
         int ret = fs_sink_stream_close_packet(stream, NULL);
 
         if (ret) {
-            BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to close packet.");
+            BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to close packet.");
             status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
             goto end;
         }
     }
 
-    BT_COMP_LOGI("Closing stream file: "
-                 "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                 "trace-name=\"%s\", path=\"%s/%s\"",
-                 bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                 bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                 stream->trace->path->str, stream->file_name->str);
+    BT_CPPLOGI_SPEC(fs_sink->logger,
+                    "Closing stream file: "
+                    "stream-id={}, stream-name=\"{}\", "
+                    "trace-name=\"{}\", path=\"{}/{}\"",
+                    bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+                    bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+                    stream->trace->path->str, stream->file_name->str);
 
     /*
      * This destroys the stream object and frees all its resources,
@@ -725,29 +723,31 @@ handle_discarded_events_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
 
     stream = borrow_stream(fs_sink, ir_stream);
     if (!stream) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to borrow stream.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to borrow stream.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
 
     if (fs_sink->ignore_discarded_events) {
-        BT_COMP_LOGI("Ignoring discarded events message: "
-                     "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                     "trace-name=\"%s\", path=\"%s/%s\"",
-                     bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                     bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                     stream->trace->path->str, stream->file_name->str);
+        BT_CPPLOGI_SPEC(fs_sink->logger,
+                        "Ignoring discarded events message: "
+                        "stream-id={}, stream-name=\"{}\", "
+                        "trace-name=\"{}\", path=\"{}/{}\"",
+                        bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+                        bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+                        stream->trace->path->str, stream->file_name->str);
         goto end;
     }
 
     if (stream->discarded_events_state.in_range) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                  "Unsupported contiguous discarded events message: "
-                                  "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                                  "trace-name=\"%s\", path=\"%s/%s\"",
-                                  bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                                  bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                                  stream->trace->path->str, stream->file_name->str);
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(
+            fs_sink->logger,
+            "Unsupported contiguous discarded events message: "
+            "stream-id={}, stream-name=\"{}\", "
+            "trace-name=\"{}\", path=\"{}/{}\"",
+            bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+            bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+            stream->trace->path->str, stream->file_name->str);
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -761,14 +761,15 @@ handle_discarded_events_msg(struct fs_sink_comp *fs_sink, const bt_message *msg)
      * time.
      */
     if (stream->packet_state.is_open && stream->sc->discarded_events_has_ts) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                  "Unsupported discarded events message with "
-                                  "default clock snapshots occurring within a packet: "
-                                  "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                                  "trace-name=\"%s\", path=\"%s/%s\"",
-                                  bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                                  bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                                  stream->trace->path->str, stream->file_name->str);
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(
+            fs_sink->logger,
+            "Unsupported discarded events message with "
+            "default clock snapshots occurring within a packet: "
+            "stream-id={}, stream-name=\"{}\", "
+            "trace-name=\"{}\", path=\"{}/{}\"",
+            bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+            bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+            stream->trace->path->str, stream->file_name->str);
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -824,29 +825,31 @@ handle_discarded_packets_msg(struct fs_sink_comp *fs_sink, const bt_message *msg
 
     stream = borrow_stream(fs_sink, ir_stream);
     if (!stream) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to borrow stream.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to borrow stream.");
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
 
     if (fs_sink->ignore_discarded_packets) {
-        BT_COMP_LOGI("Ignoring discarded packets message: "
-                     "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                     "trace-name=\"%s\", path=\"%s/%s\"",
-                     bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                     bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                     stream->trace->path->str, stream->file_name->str);
+        BT_CPPLOGI_SPEC(fs_sink->logger,
+                        "Ignoring discarded packets message: "
+                        "stream-id={}, stream-name=\"{}\", "
+                        "trace-name=\"{}\", path=\"{}/{}\"",
+                        bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+                        bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+                        stream->trace->path->str, stream->file_name->str);
         goto end;
     }
 
     if (stream->discarded_packets_state.in_range) {
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                  "Unsupported contiguous discarded packets message: "
-                                  "stream-id=%" PRIu64 ", stream-name=\"%s\", "
-                                  "trace-name=\"%s\", path=\"%s/%s\"",
-                                  bt_stream_get_id(ir_stream), bt_stream_get_name(ir_stream),
-                                  bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream)),
-                                  stream->trace->path->str, stream->file_name->str);
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(
+            fs_sink->logger,
+            "Unsupported contiguous discarded packets message: "
+            "stream-id={}, stream-name=\"{}\", "
+            "trace-name=\"{}\", path=\"{}/{}\"",
+            bt_stream_get_id(ir_stream), bt2c::maybeNull(bt_stream_get_name(ir_stream)),
+            bt2c::maybeNull(bt_trace_get_name(bt_stream_borrow_trace_const(ir_stream))),
+            stream->trace->path->str, stream->file_name->str);
         status = BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_ERROR;
         goto end;
     }
@@ -921,8 +924,8 @@ bt_component_class_sink_consume_method_status ctf_fs_sink_consume(bt_self_compon
     next_status = bt_message_iterator_next(fs_sink->upstream_iter, &msgs, &msg_count);
     if (next_status < 0) {
         status = (bt_component_class_sink_consume_method_status) next_status;
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                  "Failed to get next message from upstream iterator.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger,
+                                     "Failed to get next message from upstream iterator.");
         goto end;
     }
 
@@ -948,7 +951,8 @@ bt_component_class_sink_consume_method_status ctf_fs_sink_consume(bt_self_compon
                 break;
             case BT_MESSAGE_TYPE_MESSAGE_ITERATOR_INACTIVITY:
                 /* Ignore */
-                BT_COMP_LOGD_STR("Ignoring message iterator inactivity message.");
+                BT_CPPLOGD_STR_SPEC(fs_sink->logger,
+                                    "Ignoring message iterator inactivity message.");
                 break;
             case BT_MESSAGE_TYPE_STREAM_BEGINNING:
                 status = handle_stream_beginning_msg(fs_sink, msg);
@@ -969,11 +973,11 @@ bt_component_class_sink_consume_method_status ctf_fs_sink_consume(bt_self_compon
             BT_MESSAGE_PUT_REF_AND_RESET(msgs[i]);
 
             if (status != BT_COMPONENT_CLASS_SINK_CONSUME_METHOD_STATUS_OK) {
-                BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp,
-                                          "Failed to handle message: "
-                                          "generated CTF traces could be incomplete: "
-                                          "output-dir-path=\"%s\"",
-                                          fs_sink->output_dir_path->str);
+                BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger,
+                                             "Failed to handle message: "
+                                             "generated CTF traces could be incomplete: "
+                                             "output-dir-path=\"{}\"",
+                                             fs_sink->output_dir_path->str);
                 goto error;
             }
         }
@@ -1014,7 +1018,7 @@ ctf_fs_sink_graph_is_configured(bt_self_component_sink *self_comp)
         &fs_sink->upstream_iter);
     if (msg_iter_status != BT_MESSAGE_ITERATOR_CREATE_FROM_SINK_COMPONENT_STATUS_OK) {
         status = (bt_component_class_sink_graph_is_configured_method_status) msg_iter_status;
-        BT_COMP_LOGE_APPEND_CAUSE(fs_sink->self_comp, "Failed to create upstream iterator.");
+        BT_CPPLOGE_APPEND_CAUSE_SPEC(fs_sink->logger, "Failed to create upstream iterator.");
         goto end;
     }
 
index 70f9b5e9ae08d49cdb5758911e902b56fd414c42..529ae346027a4b0a3f544a6864077668d5777655 100644 (file)
 
 #include <babeltrace2/babeltrace.h>
 
+#include "cpp-common/bt2c/logging.hpp"
+
 struct fs_sink_comp
 {
-    bt_logging_level log_level = BT_LOGGING_LEVEL_NONE;
-    bt_self_component *self_comp = nullptr;
+    explicit fs_sink_comp(const bt2::SelfSinkComponent selfSinkComp) :
+        logger {selfSinkComp, "PLUGIN/SINK.CTF.FS/COMP"}
+    {
+    }
+
+    bt2c::Logger logger;
 
     /* Owned by this */
     bt_message_iterator *upstream_iter = nullptr;
index 0a8e28dfdefe41e9880549b39084ff12405e342d..5c8cf801da1ada833ed184ce3a08ccbc3da42b9f 100644 (file)
 
 #include <babeltrace2/babeltrace.h>
 
-#define BT_COMP_LOG_SELF_COMP (ctx->self_comp)
-#define BT_LOG_OUTPUT_LEVEL   (ctx->log_level)
-#define BT_LOG_TAG            "PLUGIN/SINK.CTF.FS/TRANSLATE-TRACE-IR-TO-CTF-IR"
-#include "logging/comp-logging.h"
-
 #include "common/assert.h"
 #include "common/common.h"
+#include "cpp-common/bt2/field-path.hpp"
+#include "cpp-common/bt2c/fmt.hpp"
 
 #include "fs-sink-ctf-meta.hpp"
 #include "fs-sink.hpp"
@@ -40,8 +37,12 @@ namespace sink {
 
 struct TraceIrToCtfIrCtx
 {
-    bt_logging_level log_level = BT_LOGGING_LEVEL_NONE;
-    bt_self_component *self_comp = nullptr;
+    explicit TraceIrToCtfIrCtx(const bt2c::Logger& parentLogger) :
+        logger {parentLogger, "PLUGIN/SINK.CTF.FS/TRANSLATE-TRACE-IR-TO-CTF-IR"}
+    {
+    }
+
+    bt2c::Logger logger;
 
     /* Weak */
     struct fs_sink_ctf_stream_class *cur_sc = nullptr;
@@ -183,9 +184,10 @@ static inline int cur_path_stack_push(ctf::sink::TraceIrToCtfIrCtx *ctx, const c
                 is_reserved_member_name(name, "timestamp_end") ||
                 is_reserved_member_name(name, "events_discarded") ||
                 is_reserved_member_name(name, "packet_seq_num")) {
-                BT_COMP_LOGE("Unsupported reserved TSDL structure field class member "
-                             "or variant field class option name: name=\"%s\"",
-                             name);
+                BT_CPPLOGE_SPEC(ctx->logger,
+                                "Unsupported reserved TSDL structure field class member "
+                                "or variant field class option name: name=\"{}\"",
+                                name);
                 ret = -1;
                 goto end;
             }
@@ -193,9 +195,10 @@ static inline int cur_path_stack_push(ctf::sink::TraceIrToCtfIrCtx *ctx, const c
 
         if (!ist_valid_identifier(field_path_elem->name->str)) {
             ret = -1;
-            BT_COMP_LOGE("Unsupported non-TSDL structure field class member "
-                         "or variant field class option name: name=\"%s\"",
-                         field_path_elem->name->str);
+            BT_CPPLOGE_SPEC(ctx->logger,
+                            "Unsupported non-TSDL structure field class member "
+                            "or variant field class option name: name=\"{}\"",
+                            field_path_elem->name->str);
             goto end;
         }
     }
@@ -616,17 +619,19 @@ translate_structure_field_class_members(ctf::sink::TraceIrToCtfIrCtx *ctx,
         memb_ir_fc = bt_field_class_structure_member_borrow_field_class_const(member);
         ret = cur_path_stack_push(ctx, name, true, memb_ir_fc, &struct_fc->base);
         if (ret) {
-            BT_COMP_LOGE("Cannot translate structure field class member: "
-                         "name=\"%s\"",
-                         name);
+            BT_CPPLOGE_SPEC(ctx->logger,
+                            "Cannot translate structure field class member: "
+                            "name=\"{}\"",
+                            name);
             goto end;
         }
 
         ret = translate_field_class(ctx);
         if (ret) {
-            BT_COMP_LOGE("Cannot translate structure field class member: "
-                         "name=\"%s\"",
-                         name);
+            BT_CPPLOGE_SPEC(ctx->logger,
+                            "Cannot translate structure field class member: "
+                            "name=\"{}\"",
+                            name);
             goto end;
         }
 
@@ -875,13 +880,13 @@ static inline int translate_option_field_class(ctf::sink::TraceIrToCtfIrCtx *ctx
     append_to_parent_field_class(ctx, &fc->base);
     ret = cur_path_stack_push(ctx, NULL, false, content_ir_fc, &fc->base);
     if (ret) {
-        BT_COMP_LOGE_STR("Cannot translate option field class content.");
+        BT_CPPLOGE_STR_SPEC(ctx->logger, "Cannot translate option field class content.");
         goto end;
     }
 
     ret = translate_field_class(ctx);
     if (ret) {
-        BT_COMP_LOGE_STR("Cannot translate option field class content.");
+        BT_CPPLOGE_STR_SPEC(ctx->logger, "Cannot translate option field class content.");
         goto end;
     }
 
@@ -1026,17 +1031,19 @@ append_to_parent:
          */
         ret = cur_path_stack_push(ctx, prot_opt_name, false, opt_ir_fc, &fc->base);
         if (ret) {
-            BT_COMP_LOGE("Cannot translate variant field class option: "
-                         "name=\"%s\"",
-                         prot_opt_name);
+            BT_CPPLOGE_SPEC(ctx->logger,
+                            "Cannot translate variant field class option: "
+                            "name=\"{}\"",
+                            prot_opt_name);
             goto end;
         }
 
         ret = translate_field_class(ctx);
         if (ret) {
-            BT_COMP_LOGE("Cannot translate variant field class option: "
-                         "name=\"%s\"",
-                         prot_opt_name);
+            BT_CPPLOGE_SPEC(ctx->logger,
+                            "Cannot translate variant field class option: "
+                            "name=\"{}\"",
+                            prot_opt_name);
             goto end;
         }
 
@@ -1064,13 +1071,13 @@ static inline int translate_static_array_field_class(ctf::sink::TraceIrToCtfIrCt
     append_to_parent_field_class(ctx, &fc->base.base);
     ret = cur_path_stack_push(ctx, NULL, false, elem_ir_fc, &fc->base.base);
     if (ret) {
-        BT_COMP_LOGE_STR("Cannot translate static array field class element.");
+        BT_CPPLOGE_STR_SPEC(ctx->logger, "Cannot translate static array field class element.");
         goto end;
     }
 
     ret = translate_field_class(ctx);
     if (ret) {
-        BT_COMP_LOGE_STR("Cannot translate static array field class element.");
+        BT_CPPLOGE_STR_SPEC(ctx->logger, "Cannot translate static array field class element.");
         goto end;
     }
 
@@ -1104,13 +1111,13 @@ static inline int translate_dynamic_array_field_class(ctf::sink::TraceIrToCtfIrC
     append_to_parent_field_class(ctx, &fc->base.base);
     ret = cur_path_stack_push(ctx, NULL, false, elem_ir_fc, &fc->base.base);
     if (ret) {
-        BT_COMP_LOGE_STR("Cannot translate dynamic array field class element.");
+        BT_CPPLOGE_STR_SPEC(ctx->logger, "Cannot translate dynamic array field class element.");
         goto end;
     }
 
     ret = translate_field_class(ctx);
     if (ret) {
-        BT_COMP_LOGE_STR("Cannot translate dynamic array field class element.");
+        BT_CPPLOGE_STR_SPEC(ctx->logger, "Cannot translate dynamic array field class element.");
         goto end;
     }
 
@@ -1446,18 +1453,16 @@ static int translate_scope_field_class(ctf::sink::TraceIrToCtfIrCtx *ctx, bt_fie
     BT_ASSERT(ctx->cur_path->len == 0);
     ret = cur_path_stack_push(ctx, NULL, false, ir_fc, NULL);
     if (ret) {
-        BT_COMP_LOGE("Cannot translate scope structure field class: "
-                     "scope=%d",
-                     scope);
+        BT_CPPLOGE_SPEC(ctx->logger, "Cannot translate scope structure field class: scope={}",
+                        static_cast<bt2::FieldPathScope>(scope));
         goto end;
     }
 
     ret =
         translate_structure_field_class_members(ctx, fs_sink_ctf_field_class_as_struct(*fc), ir_fc);
     if (ret) {
-        BT_COMP_LOGE("Cannot translate scope structure field class: "
-                     "scope=%d",
-                     scope);
+        BT_CPPLOGE_SPEC(ctx->logger, "Cannot translate scope structure field class: scope={}",
+                        static_cast<bt2::FieldPathScope>(scope));
         goto end;
     }
 
@@ -1470,12 +1475,10 @@ end:
     return ret;
 }
 
-static inline void ctx_init(ctf::sink::TraceIrToCtfIrCtx *ctx, struct fs_sink_comp *fs_sink)
+static inline void ctx_init(ctf::sink::TraceIrToCtfIrCtx *ctx)
 {
     ctx->cur_path = g_array_new(FALSE, TRUE, sizeof(struct field_path_elem));
     BT_ASSERT(ctx->cur_path);
-    ctx->log_level = fs_sink->log_level;
-    ctx->self_comp = fs_sink->self_comp;
 }
 
 static inline void ctx_fini(ctf::sink::TraceIrToCtfIrCtx *ctx)
@@ -1491,13 +1494,13 @@ static int translate_event_class(struct fs_sink_comp *fs_sink, struct fs_sink_ct
                                  struct fs_sink_ctf_event_class **out_ec)
 {
     int ret = 0;
-    ctf::sink::TraceIrToCtfIrCtx ctx;
+    ctf::sink::TraceIrToCtfIrCtx ctx {fs_sink->logger};
     struct fs_sink_ctf_event_class *ec;
 
     BT_ASSERT(sc);
     BT_ASSERT(ir_ec);
 
-    ctx_init(&ctx, fs_sink);
+    ctx_init(&ctx);
     ec = fs_sink_ctf_event_class_create(sc, ir_ec);
     BT_ASSERT(ec);
     ctx.cur_sc = sc;
@@ -1586,11 +1589,11 @@ static int translate_stream_class(struct fs_sink_comp *fs_sink, struct fs_sink_c
                                   struct fs_sink_ctf_stream_class **out_sc)
 {
     int ret = 0;
-    ctf::sink::TraceIrToCtfIrCtx ctx;
+    ctf::sink::TraceIrToCtfIrCtx ctx {fs_sink->logger};
 
     BT_ASSERT(trace);
     BT_ASSERT(ir_sc);
-    ctx_init(&ctx, fs_sink);
+    ctx_init(&ctx);
     *out_sc = fs_sink_ctf_stream_class_create(trace, ir_sc);
     BT_ASSERT(*out_sc);
 
@@ -1694,10 +1697,10 @@ struct fs_sink_ctf_trace *translate_trace_trace_ir_to_ctf_ir(struct fs_sink_comp
         bt_trace_borrow_environment_entry_by_index_const(ir_trace, i, &name, &val);
 
         if (!ist_valid_identifier(name)) {
-            BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, fs_sink->log_level, fs_sink->self_comp,
-                                "Unsupported trace class's environment entry name: "
-                                "name=\"%s\"",
-                                name);
+            BT_CPPLOGE_SPEC(fs_sink->logger,
+                            "Unsupported trace class's environment entry name: "
+                            "name=\"{}\"",
+                            name);
             goto end;
         }
 
@@ -1706,10 +1709,10 @@ struct fs_sink_ctf_trace *translate_trace_trace_ir_to_ctf_ir(struct fs_sink_comp
         case BT_VALUE_TYPE_STRING:
             break;
         default:
-            BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, fs_sink->log_level, fs_sink->self_comp,
-                                "Unsupported trace class's environment entry value type: "
-                                "type=%s",
-                                bt_common_value_type_string(bt_value_get_type(val)));
+            BT_CPPLOGE_SPEC(fs_sink->logger,
+                            "Unsupported trace class's environment entry value type: "
+                            "type={}",
+                            static_cast<bt2::ValueType>(bt_value_get_type(val)));
             goto end;
         }
     }
This page took 0.045255 seconds and 4 git commands to generate.