lib: strictly type function return status enumerations
[babeltrace.git] / src / plugins / ctf / fs-sink / fs-sink-trace.c
index 4feb8245fb07ab150c97d18e2363e3863daacc87..07d78f764b7e468730edd15853d6eed6a348f9c5 100644 (file)
  * 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 "plugins/comp-logging.h"
 
 #include <babeltrace2/babeltrace.h>
 #include <stdio.h>
@@ -137,7 +139,8 @@ GString *make_unique_trace_path(const char *path)
  */
 
 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;
@@ -149,7 +152,7 @@ int lttng_validate_datetime(const char *datetime)
         * the format.
         */
        if (!g_time_val_from_iso8601(datetime, &tv)) {
-               BT_LOGI("Couldn't parse datetime as ISO 8601: date=\"%s\"", datetime);
+               BT_COMP_LOGI("Couldn't parse datetime as ISO 8601: date=\"%s\"", datetime);
                goto end;
        }
 
@@ -160,14 +163,15 @@ 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_class *tc)
 {
        const bt_value *v;
        int ret;
 
        v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "tracer_buffering_id");
        if (!v || !bt_value_is_signed_integer(v)) {
-               BT_LOGI_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;
        }
 
@@ -176,7 +180,7 @@ int append_lttng_trace_path_ust_uid(GString *path, const bt_trace_class *tc)
 
        v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "isa_length");
        if (!v || !bt_value_is_signed_integer(v)) {
-               BT_LOGI_STR("Couldn't get environment value: name=\"isa_length\"");
+               BT_COMP_LOGI_STR("Couldn't get environment value: name=\"isa_length\"");
                goto error;
        }
 
@@ -194,7 +198,8 @@ 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_class *tc)
 {
        const bt_value *v;
        const char *datetime;
@@ -202,7 +207,7 @@ int append_lttng_trace_path_ust_pid(GString *path, const bt_trace_class *tc)
 
        v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "procname");
        if (!v || !bt_value_is_string(v)) {
-               BT_LOGI_STR("Couldn't get environment value: name=\"procname\"");
+               BT_COMP_LOGI_STR("Couldn't get environment value: name=\"procname\"");
                goto error;
        }
 
@@ -210,7 +215,7 @@ int append_lttng_trace_path_ust_pid(GString *path, const bt_trace_class *tc)
 
        v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "vpid");
        if (!v || !bt_value_is_signed_integer(v)) {
-               BT_LOGI_STR("Couldn't get environment value: name=\"vpid\"");
+               BT_COMP_LOGI_STR("Couldn't get environment value: name=\"vpid\"");
                goto error;
        }
 
@@ -218,13 +223,13 @@ int append_lttng_trace_path_ust_pid(GString *path, const bt_trace_class *tc)
 
        v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "vpid_datetime");
        if (!v || !bt_value_is_string(v)) {
-               BT_LOGI_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;
        }
 
@@ -262,7 +267,7 @@ GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
        v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "tracer_name");
        if (!v || !bt_value_is_string(v)) {
-               BT_LOGI_STR("Couldn't get environment value: name=\"tracer_name\"");
+               BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_name\"");
                goto error;
        }
 
@@ -270,13 +275,13 @@ GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
        if (!g_str_equal(tracer_name, "lttng-ust")
                        && !g_str_equal(tracer_name, "lttng-modules")) {
-               BT_LOGI("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");
        if (!v || !bt_value_is_signed_integer(v)) {
-               BT_LOGI_STR("Couldn't get environment value: name=\"tracer_major\"");
+               BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_major\"");
                goto error;
        }
 
@@ -284,21 +289,21 @@ GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
        v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "tracer_minor");
        if (!v || !bt_value_is_signed_integer(v)) {
-               BT_LOGI_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);
 
        if (!(tracer_major >= 3 || (tracer_major == 2 && tracer_minor >= 11))) {
-               BT_LOGI("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");
        if (!v || !bt_value_is_string(v)) {
-               BT_LOGI_STR("Couldn't get environment value: name=\"tracer_hostname\"");
+               BT_COMP_LOGI_STR("Couldn't get environment value: name=\"tracer_hostname\"");
                goto error;
        }
 
@@ -306,7 +311,7 @@ GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
        v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "trace_name");
        if (!v || !bt_value_is_string(v)) {
-               BT_LOGI_STR("Couldn't get environment value: name=\"trace_name\"");
+               BT_COMP_LOGI_STR("Couldn't get environment value: name=\"trace_name\"");
                goto error;
        }
 
@@ -314,13 +319,13 @@ GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
        v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "trace_creation_datetime");
        if (!v || !bt_value_is_string(v)) {
-               BT_LOGI_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;
        }
 
@@ -328,7 +333,7 @@ GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
        v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "domain");
        if (!v || !bt_value_is_string(v)) {
-               BT_LOGI_STR("Couldn't get environment value: name=\"domain\"");
+               BT_COMP_LOGI_STR("Couldn't get environment value: name=\"domain\"");
                goto error;
        }
 
@@ -340,7 +345,7 @@ GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
 
                v = bt_trace_class_borrow_environment_entry_value_by_name_const(tc, "tracer_buffering_scheme");
                if (!v || !bt_value_is_string(v)) {
-                       BT_LOGI_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;
                }
 
@@ -348,21 +353,21 @@ GString *make_lttng_trace_path_rel(const struct fs_sink_trace *trace)
                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, tc)) {
                                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, tc)) {
                                goto error;
                        }
                } else {
                        /* Unknown buffering scheme. */
-                       BT_LOGI("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_LOGI("Unknown domain: domain=\"%s\"", domain);
+               BT_COMP_LOGI("Unknown domain: domain=\"%s\"", domain);
                goto error;
        }
 
@@ -493,7 +498,7 @@ 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_LOGF_ERRNO("In trace destruction listener: "
+               BT_COMP_LOGF_ERRNO("In trace destruction listener: "
                        "cannot open metadata file for writing: ",
                        ": path=\"%s\"", trace->metadata_path->str);
                abort();
@@ -501,7 +506,7 @@ void fs_sink_trace_destroy(struct fs_sink_trace *trace)
 
        len = fwrite(tsdl->str, sizeof(*tsdl->str), tsdl->len, fh);
        if (len != tsdl->len) {
-               BT_LOGF_ERRNO("In trace destruction listener: "
+               BT_COMP_LOGF_ERRNO("In trace destruction listener: "
                        "cannot write metadata file: ",
                        ": path=\"%s\"", trace->metadata_path->str);
                abort();
@@ -528,7 +533,7 @@ end:
                int ret = fclose(fh);
 
                if (ret != 0) {
-                       BT_LOGW_ERRNO("In trace destruction listener: "
+                       BT_COMP_LOGW_ERRNO("In trace destruction listener: "
                                "cannot close metadata file: ",
                                ": path=\"%s\"", trace->metadata_path->str);
                }
@@ -561,17 +566,18 @@ struct fs_sink_trace *fs_sink_trace_create(struct fs_sink_comp *fs_sink,
 {
        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));
+               fs_sink, bt_trace_borrow_class_const(ir_trace));
        if (!trace->tc) {
                goto error;
        }
@@ -580,7 +586,7 @@ struct fs_sink_trace *fs_sink_trace_create(struct fs_sink_comp *fs_sink,
        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;
        }
This page took 0.034348 seconds and 4 git commands to generate.