* SOFTWARE.
*/
-#define BT_LOG_TAG "PLUGIN-CTF-FS-SINK-TRACE"
-#include "logging.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 <babeltrace2/babeltrace.h>
#include <stdio.h>
*/
static
-int lttng_validate_datetime(const char *datetime)
+int lttng_validate_datetime(const struct fs_sink_trace *trace,
+ const char *datetime)
{
GTimeVal tv;
int ret = -1;
* the format.
*/
if (!g_time_val_from_iso8601(datetime, &tv)) {
- BT_LOGD("Couldn't parse datetime as iso8601: date=\"%s\"", datetime);
+ BT_COMP_LOGI("Couldn't parse datetime as ISO 8601: date=\"%s\"", datetime);
goto end;
}
}
static
-int append_lttng_trace_path_ust_uid(GString *path, const bt_trace_class *tc)
+int append_lttng_trace_path_ust_uid(const struct fs_sink_trace *trace,
+ GString *path, const bt_trace *tc)
{
const bt_value *v;
int ret;
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "tracer_buffering_id");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(tc, "tracer_buffering_id");
if (!v || !bt_value_is_signed_integer(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"tracer_buffering_id\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_buffering_id\"");
goto error;
}
g_string_append_printf(path, G_DIR_SEPARATOR_S "%" PRId64,
- bt_value_signed_integer_get(v));
+ bt_value_integer_signed_get(v));
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "isa_length");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(tc, "architecture_bit_width");
if (!v || !bt_value_is_signed_integer(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"isa_length\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"architecture_bit_width\"");
goto error;
}
g_string_append_printf(path, G_DIR_SEPARATOR_S "%" PRIu64 "-bit",
- bt_value_signed_integer_get(v));
+ bt_value_integer_signed_get(v));
ret = 0;
goto end;
}
static
-int append_lttng_trace_path_ust_pid(GString *path, const bt_trace_class *tc)
+int append_lttng_trace_path_ust_pid(const struct fs_sink_trace *trace,
+ GString *path, const bt_trace *tc)
{
const bt_value *v;
const char *datetime;
int ret;
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "procname");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(tc, "procname");
if (!v || !bt_value_is_string(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"procname\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"procname\"");
goto error;
}
g_string_append_printf(path, G_DIR_SEPARATOR_S "%s", bt_value_string_get(v));
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "vpid");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(tc, "vpid");
if (!v || !bt_value_is_signed_integer(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"vpid\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"vpid\"");
goto error;
}
- g_string_append_printf(path, "-%" PRId64, bt_value_signed_integer_get(v));
+ g_string_append_printf(path, "-%" PRId64, bt_value_integer_signed_get(v));
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "vpid_datetime");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(tc, "vpid_datetime");
if (!v || !bt_value_is_string(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"vpid_datetime\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"vpid_datetime\"");
goto error;
}
datetime = bt_value_string_get(v);
- if (lttng_validate_datetime(datetime)) {
+ if (lttng_validate_datetime(trace, datetime)) {
goto error;
}
static
GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
{
- const bt_trace_class *tc;
const bt_value *v;
const char *tracer_name, *domain, *datetime;
int64_t tracer_major, tracer_minor;
goto error;
}
- tc = bt_trace_borrow_class_const(trace->ir_trace);
-
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "tracer_name");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace->ir_trace, "tracer_name");
if (!v || !bt_value_is_string(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"tracer_name\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_name\"");
goto error;
}
if (!g_str_equal(tracer_name, "lttng-ust")
&& !g_str_equal(tracer_name, "lttng-modules")) {
- BT_LOGD("Unrecognized tracer name: name=\"%s\"", tracer_name);
+ BT_COMP_LOGI("Unrecognized tracer name: name=\"%s\"", tracer_name);
goto error;
}
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "tracer_major");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace->ir_trace, "tracer_major");
if (!v || !bt_value_is_signed_integer(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"tracer_major\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_major\"");
goto error;
}
- tracer_major = bt_value_signed_integer_get(v);
+ tracer_major = bt_value_integer_signed_get(v);
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "tracer_minor");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace->ir_trace, "tracer_minor");
if (!v || !bt_value_is_signed_integer(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"tracer_minor\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_minor\"");
goto error;
}
- tracer_minor = bt_value_signed_integer_get(v);
+ tracer_minor = bt_value_integer_signed_get(v);
if (!(tracer_major >= 3 || (tracer_major == 2 && tracer_minor >= 11))) {
- BT_LOGD("Unsupported LTTng version for automatic trace path: major=%" PRId64 ", minor=%" PRId64,
+ BT_COMP_LOGI("Unsupported LTTng version for automatic trace path: major=%" PRId64 ", minor=%" PRId64,
tracer_major, tracer_minor);
goto error;
}
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "hostname");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace->ir_trace, "hostname");
if (!v || !bt_value_is_string(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"tracer_hostname\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_hostname\"");
goto error;
}
g_string_assign(path, bt_value_string_get(v));
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "trace_name");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace->ir_trace, "trace_name");
if (!v || !bt_value_is_string(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"trace_name\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"trace_name\"");
goto error;
}
g_string_append_printf(path, G_DIR_SEPARATOR_S "%s", bt_value_string_get(v));
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "trace_creation_datetime");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace->ir_trace, "trace_creation_datetime");
if (!v || !bt_value_is_string(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"trace_creation_datetime\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"trace_creation_datetime\"");
goto error;
}
datetime = bt_value_string_get(v);
- if (lttng_validate_datetime(datetime)) {
+ if (lttng_validate_datetime(trace, datetime)) {
goto error;
}
g_string_append_printf(path, "-%s", datetime);
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "domain");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace->ir_trace, "domain");
if (!v || !bt_value_is_string(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"domain\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"domain\"");
goto error;
}
if (g_str_equal(domain, "ust")) {
const char *tracer_buffering_scheme;
- v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "tracer_buffering_scheme");
+ v = bt_trace_borrow_environment_entry_value_by_name_const(
+ trace->ir_trace, "tracer_buffering_scheme");
if (!v || !bt_value_is_string(v)) {
- BT_LOGD_STR("Couldn't get environment value: name=\"tracer_buffering_scheme\"");
+ BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_buffering_scheme\"");
goto error;
}
g_string_append_printf(path, G_DIR_SEPARATOR_S "%s", tracer_buffering_scheme);
if (g_str_equal(tracer_buffering_scheme, "uid")) {
- if (append_lttng_trace_path_ust_uid(path, tc)) {
+ if (append_lttng_trace_path_ust_uid(trace, path,
+ trace->ir_trace)) {
goto error;
}
} else if (g_str_equal(tracer_buffering_scheme, "pid")){
- if (append_lttng_trace_path_ust_pid(path, tc)) {
+ if (append_lttng_trace_path_ust_pid(trace, path,
+ trace->ir_trace)) {
goto error;
}
} else {
/* Unknown buffering scheme. */
- BT_LOGD("Unknown buffering scheme: tracer_buffering_scheme=\"%s\"", tracer_buffering_scheme);
+ BT_COMP_LOGI("Unknown buffering scheme: tracer_buffering_scheme=\"%s\"", tracer_buffering_scheme);
goto error;
}
} else if (!g_str_equal(domain, "kernel")) {
/* Unknown domain. */
- BT_LOGD("Unknown domain: domain=\"%s\"", domain);
+ BT_COMP_LOGI("Unknown domain: domain=\"%s\"", domain);
goto error;
}
tsdl = g_string_new(NULL);
BT_ASSERT(tsdl);
- translate_trace_class_ctf_ir_to_tsdl(trace->tc, tsdl);
+ translate_trace_ctf_ir_to_tsdl(trace->trace, tsdl);
BT_ASSERT(trace->metadata_path);
fh = fopen(trace->metadata_path->str, "wb");
if (!fh) {
- BT_LOGF_ERRNO("In trace destruction listener: "
- "cannot open metadata file for writing: ",
+ BT_COMP_LOGF_ERRNO("In trace destruction listener: "
+ "cannot open metadata file for writing",
": path=\"%s\"", trace->metadata_path->str);
abort();
}
len = fwrite(tsdl->str, sizeof(*tsdl->str), tsdl->len, fh);
if (len != tsdl->len) {
- BT_LOGF_ERRNO("In trace destruction listener: "
- "cannot write metadata file: ",
+ BT_COMP_LOGF_ERRNO("In trace destruction listener: "
+ "cannot write metadata file",
": path=\"%s\"", trace->metadata_path->str);
abort();
}
trace->path = NULL;
}
- g_string_free(trace->metadata_path, TRUE);
- trace->metadata_path = NULL;
-
- fs_sink_ctf_trace_class_destroy(trace->tc);
- trace->tc = NULL;
- g_free(trace);
-
-end:
if (fh) {
int ret = fclose(fh);
if (ret != 0) {
- BT_LOGW_ERRNO("In trace destruction listener: "
- "cannot close metadata file: ",
+ BT_COMP_LOGW_ERRNO("In trace destruction listener: "
+ "cannot close metadata file",
": path=\"%s\"", trace->metadata_path->str);
}
}
+ g_string_free(trace->metadata_path, TRUE);
+ trace->metadata_path = NULL;
+
+ fs_sink_ctf_trace_destroy(trace->trace);
+ trace->trace = NULL;
+ g_free(trace);
+
if (tsdl) {
g_string_free(tsdl, TRUE);
}
+end:
return;
}
{
int ret;
struct fs_sink_trace *trace = g_new0(struct fs_sink_trace, 1);
- bt_trace_status trace_status;
+ bt_trace_add_listener_status trace_status;
if (!trace) {
goto end;
}
+ 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);
- trace->tc = translate_trace_class_trace_ir_to_ctf_ir(
- bt_trace_borrow_class_const(ir_trace));
- if (!trace->tc) {
+ trace->trace = translate_trace_trace_ir_to_ctf_ir(fs_sink, ir_trace);
+ if (!trace->trace) {
goto error;
}
BT_ASSERT(trace->path);
ret = g_mkdir_with_parents(trace->path->str, 0755);
if (ret) {
- BT_LOGE_ERRNO("Cannot create directories for trace directory",
+ BT_COMP_LOGE_ERRNO("Cannot create directories for trace directory",
": path=\"%s\"", trace->path->str);
goto error;
}