From 3c20ac1237c1890169e6ffbb8695860740c93c10 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Wed, 3 Apr 2024 15:34:14 -0400 Subject: [PATCH] sink.ctf.fs: use bt2c::Logger 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 Reviewed-on: https://review.lttng.org/c/babeltrace/+/12241 Tested-by: jenkins Reviewed-by: Philippe Proulx --- src/cpp-common/bt2c/logging.hpp | 8 + src/plugins/ctf/fs-sink/fs-sink-stream.cpp | 33 +- src/plugins/ctf/fs-sink/fs-sink-stream.hpp | 8 +- src/plugins/ctf/fs-sink/fs-sink-trace.cpp | 83 +++-- src/plugins/ctf/fs-sink/fs-sink-trace.hpp | 9 +- src/plugins/ctf/fs-sink/fs-sink.cpp | 348 +++++++++--------- src/plugins/ctf/fs-sink/fs-sink.hpp | 10 +- .../fs-sink/translate-trace-ir-to-ctf-ir.cpp | 107 +++--- 8 files changed, 320 insertions(+), 286 deletions(-) diff --git a/src/cpp-common/bt2c/logging.hpp b/src/cpp-common/bt2c/logging.hpp index 274c2fae..df5cb494 100644 --- a/src/cpp-common/bt2c/logging.hpp +++ b/src/cpp-common/bt2c/logging.hpp @@ -593,6 +593,14 @@ private: mutable std::vector _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 */ diff --git a/src/plugins/ctf/fs-sink/fs-sink-stream.cpp b/src/plugins/ctf/fs-sink/fs-sink-stream.cpp index 9ab71b25..e070e435 100644 --- a/src/plugins/ctf/fs-sink/fs-sink-stream.cpp +++ b/src/plugins/ctf/fs-sink/fs-sink-stream.cpp @@ -9,11 +9,6 @@ #include -#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(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; } diff --git a/src/plugins/ctf/fs-sink/fs-sink-stream.hpp b/src/plugins/ctf/fs-sink/fs-sink-stream.hpp index 8344666a..8c309525 100644 --- a/src/plugins/ctf/fs-sink/fs-sink-stream.hpp +++ b/src/plugins/ctf/fs-sink/fs-sink-stream.hpp @@ -12,6 +12,7 @@ #include +#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 {}; diff --git a/src/plugins/ctf/fs-sink/fs-sink-trace.cpp b/src/plugins/ctf/fs-sink/fs-sink-trace.cpp index 295ec2bc..79d4839a 100644 --- a/src/plugins/ctf/fs-sink/fs-sink-trace.cpp +++ b/src/plugins/ctf/fs-sink/fs-sink-trace.cpp @@ -9,11 +9,6 @@ #include -#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; } diff --git a/src/plugins/ctf/fs-sink/fs-sink-trace.hpp b/src/plugins/ctf/fs-sink/fs-sink-trace.hpp index a85966ca..c9b16436 100644 --- a/src/plugins/ctf/fs-sink/fs-sink-trace.hpp +++ b/src/plugins/ctf/fs-sink/fs-sink-trace.hpp @@ -11,12 +11,19 @@ #include +#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 */ diff --git a/src/plugins/ctf/fs-sink/fs-sink.cpp b/src/plugins/ctf/fs-sink/fs-sink.cpp index 39d4ff43..c6d5029c 100644 --- a/src/plugins/ctf/fs-sink/fs-sink.cpp +++ b/src/plugins/ctf/fs-sink/fs-sink.cpp @@ -9,12 +9,8 @@ #include -#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; } diff --git a/src/plugins/ctf/fs-sink/fs-sink.hpp b/src/plugins/ctf/fs-sink/fs-sink.hpp index 70f9b5e9..529ae346 100644 --- a/src/plugins/ctf/fs-sink/fs-sink.hpp +++ b/src/plugins/ctf/fs-sink/fs-sink.hpp @@ -11,10 +11,16 @@ #include +#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; diff --git a/src/plugins/ctf/fs-sink/translate-trace-ir-to-ctf-ir.cpp b/src/plugins/ctf/fs-sink/translate-trace-ir-to-ctf-ir.cpp index 0a8e28df..5c8cf801 100644 --- a/src/plugins/ctf/fs-sink/translate-trace-ir-to-ctf-ir.cpp +++ b/src/plugins/ctf/fs-sink/translate-trace-ir-to-ctf-ir.cpp @@ -12,13 +12,10 @@ #include -#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(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(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(bt_value_get_type(val))); goto end; } } -- 2.34.1