From 087bc0603db40d8cd5f4fddf933f3ded4829369e Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Fri, 12 May 2017 18:07:51 -0400 Subject: [PATCH] Implement logging in lttng-live component MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Mathieu Desnoyers Signed-off-by: Jérémie Galarneau --- plugins/ctf/Makefile.am | 3 +- plugins/ctf/lttng-live/data-stream.c | 26 +-- plugins/ctf/lttng-live/lttng-live-internal.h | 7 +- plugins/ctf/lttng-live/lttng-live.c | 82 ++++--- plugins/ctf/lttng-live/metadata.c | 15 +- plugins/ctf/lttng-live/viewer-connection.c | 229 +++++++++---------- 6 files changed, 181 insertions(+), 181 deletions(-) diff --git a/plugins/ctf/Makefile.am b/plugins/ctf/Makefile.am index 297106da..b2f60258 100644 --- a/plugins/ctf/Makefile.am +++ b/plugins/ctf/Makefile.am @@ -17,4 +17,5 @@ libbabeltrace_plugin_ctf_la_LIBADD = \ $(top_builddir)/lib/libbabeltrace.la \ fs-src/libbabeltrace-plugin-ctf-fs.la \ lttng-live/libbabeltrace-plugin-ctf-lttng-live.la \ - fs-sink/libbabeltrace-plugin-ctf-writer.la + fs-sink/libbabeltrace-plugin-ctf-writer.la \ + $(top_builddir)/logging/libbabeltrace-logging.la diff --git a/plugins/ctf/lttng-live/data-stream.c b/plugins/ctf/lttng-live/data-stream.c index 6412e3d0..c3449234 100644 --- a/plugins/ctf/lttng-live/data-stream.c +++ b/plugins/ctf/lttng-live/data-stream.c @@ -32,12 +32,10 @@ #include #include "../common/notif-iter/notif-iter.h" #include -#include "data-stream.h" -#define PRINT_ERR_STREAM lttng_live->error_fp -#define PRINT_PREFIX "lttng-live-data-stream" -#define PRINT_DBG_CHECK lttng_live_debug -#include "../print.h" +#define BT_LOG_TAG "PLUGIN-CTF-LTTNG-LIVE-DS" + +#include "data-stream.h" static enum bt_ctf_notif_iter_medium_status medop_request_bytes( @@ -66,12 +64,7 @@ enum bt_ctf_notif_iter_medium_status medop_request_bytes( status = lttng_live_get_stream_bytes(lttng_live, stream, stream->buf, stream->offset, read_len, &recv_len); -#if 0 //DEBUG - for (i = 0; i < recv_len; i++) { - fprintf(stderr, "%x ", stream->buf[i]); - } - fprintf(stderr, "\n"); -#endif + BT_LOGV_MEM(stream->buf, recv_len, "Live receive payload"); *buffer_addr = stream->buf; *buffer_sz = recv_len; stream->offset += recv_len; @@ -83,19 +76,16 @@ struct bt_ctf_stream *medop_get_stream( struct bt_ctf_stream_class *stream_class, void *data) { struct lttng_live_stream_iterator *lttng_live_stream = data; - struct lttng_live_trace *trace = lttng_live_stream->trace; - struct lttng_live_session *session = trace->session; - struct lttng_live_component *lttng_live = session->lttng_live; if (!lttng_live_stream->stream) { int64_t id = bt_ctf_stream_class_get_id(stream_class); - PDBG("Creating stream %s out of stream class %" PRId64 "\n", + BT_LOGD("Creating stream %s out of stream class %" PRId64, lttng_live_stream->name, id); lttng_live_stream->stream = bt_ctf_stream_create(stream_class, lttng_live_stream->name); if (!lttng_live_stream->stream) { - PERR("Cannot create stream %s (stream class %" PRId64 ")\n", + BT_LOGE("Cannot create stream %s (stream class %" PRId64 ")", lttng_live_stream->name, id); } } @@ -128,7 +118,7 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_lazy_notif_init( } stream->notif_iter = bt_ctf_notif_iter_create(trace->trace, lttng_live->max_query_size, medops, - stream, lttng_live->error_fp); + stream, stderr); if (!stream->notif_iter) { goto error; } @@ -170,7 +160,7 @@ struct lttng_live_stream_iterator *lttng_live_stream_iterator_create( if (trace->trace) { stream->notif_iter = bt_ctf_notif_iter_create(trace->trace, lttng_live->max_query_size, medops, - stream, lttng_live->error_fp); + stream, stderr); if (!stream->notif_iter) { goto error; } diff --git a/plugins/ctf/lttng-live/lttng-live-internal.h b/plugins/ctf/lttng-live/lttng-live-internal.h index c55d999a..10ad6607 100644 --- a/plugins/ctf/lttng-live/lttng-live-internal.h +++ b/plugins/ctf/lttng-live/lttng-live-internal.h @@ -31,6 +31,10 @@ #include #include + +#define BT_LOG_OUTPUT_LEVEL bt_lttng_live_log_level +#include + #include #include #include @@ -47,7 +51,7 @@ #define U64_STR_MAX_LEN 20 #define STREAM_NAME_MAX_LEN (sizeof(STREAM_NAME_PREFIX) + U64_STR_MAX_LEN) -extern bool lttng_live_debug; +extern int bt_lttng_live_log_level; struct lttng_live_component; struct lttng_live_session; @@ -182,7 +186,6 @@ struct lttng_live_component { struct bt_list_head sessions; GString *url; - FILE *error_fp; size_t max_query_size; struct lttng_live_component_options options; diff --git a/plugins/ctf/lttng-live/lttng-live.c b/plugins/ctf/lttng-live/lttng-live.c index 9cc2f879..74d1ac37 100644 --- a/plugins/ctf/lttng-live/lttng-live.c +++ b/plugins/ctf/lttng-live/lttng-live.c @@ -47,20 +47,15 @@ #include #include +#define BT_LOG_TAG "PLUGIN-CTF-LTTNG-LIVE" + #include "lttng-live-internal.h" #include "data-stream.h" #include "metadata.h" -#define PRINT_ERR_STREAM (lttng_live->error_fp) -#define PRINT_PREFIX "lttng-live" -#define PRINT_DBG_CHECK lttng_live_debug #define MAX_QUERY_SIZE (256*1024) -#include "../print.h" -#ifdef LIVE_DEBUG -#define print_dbg(fmt, args...) \ - fprintf(stderr, "%s() at " __FILE__ ":%d " fmt "\n", \ - __func__, __LINE__, ## args) +#define print_dbg(fmt, ...) BT_LOGD(fmt, ## __VA_ARGS__) static const char *print_state(struct lttng_live_stream_iterator *s) { @@ -79,9 +74,6 @@ static const char *print_state(struct lttng_live_stream_iterator *s) return "ERROR"; } } -#else -#define print_dbg(fmt, args...) -#endif #define print_stream_state(stream) \ print_dbg("stream %s state %s last_inact_ts %" PRId64 " cur_inact_ts %" PRId64, \ @@ -90,7 +82,7 @@ static const char *print_state(struct lttng_live_stream_iterator *s) stream->current_inactivity_timestamp) BT_HIDDEN -bool lttng_live_debug; +int bt_lttng_live_log_level = BT_LOG_NONE; BT_HIDDEN int lttng_live_add_port(struct lttng_live_component *lttng_live, @@ -108,7 +100,7 @@ int lttng_live_add_port(struct lttng_live_component *lttng_live, if (!private_port) { return -1; } - PDBG("Added port %s\n", name); + BT_LOGI("Added port %s", name); if (lttng_live->no_stream_port) { ret = bt_private_port_remove_from_component(lttng_live->no_stream_port); @@ -172,7 +164,7 @@ void lttng_live_destroy_trace(struct bt_object *obj) { struct lttng_live_trace *trace = container_of(obj, struct lttng_live_trace, obj); - PDBG("Destroy trace\n"); + BT_LOGI("Destroy trace"); assert(bt_list_empty(&trace->streams)); bt_list_del(&trace->node); lttng_live_metadata_fini(trace); @@ -196,6 +188,7 @@ struct lttng_live_trace *lttng_live_create_trace(struct lttng_live_session *sess trace->new_metadata_needed = true; bt_list_add(&trace->node, &session->traces); bt_object_init(&trace->obj, lttng_live_destroy_trace); + BT_LOGI("Create trace"); goto end; error: g_free(trace); @@ -251,11 +244,11 @@ int lttng_live_add_session(struct lttng_live_component *lttng_live, uint64_t ses s->lttng_live = lttng_live; s->new_streams_needed = true; - PDBG("Reading from session %" PRIu64 "\n", s->id); + BT_LOGI("Reading from session %" PRIu64, s->id); bt_list_add(&s->node, <tng_live->sessions); goto end; error: - PERR("Error adding session\n"); + BT_LOGE("Error adding session"); g_free(s); ret = -1; end: @@ -267,11 +260,11 @@ void lttng_live_destroy_session(struct lttng_live_session *session) { struct lttng_live_trace *trace, *t; - PDBG("Destroy session\n"); + BT_LOGI("Destroy session"); if (session->id != -1ULL) { if (lttng_live_detach_session(session)) { /* Old relayd cannot detach sessions. */ - PDBG("Unable to detach session %" PRIu64 "\n", + BT_LOGD("Unable to detach session %" PRIu64, session->id); } session->id = -1ULL; @@ -317,12 +310,12 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_iterator_next_check_stream_sta break; case LTTNG_LIVE_STREAM_ACTIVE_NO_DATA: /* Invalid state. */ - PERR("Unexpected stream state \"ACTIVE_NO_DATA\"\n"); - return BT_CTF_LTTNG_LIVE_ITERATOR_STATUS_ERROR; + BT_LOGF("Unexpected stream state \"ACTIVE_NO_DATA\""); + abort(); case LTTNG_LIVE_STREAM_QUIESCENT_NO_DATA: /* Invalid state. */ - PERR("Unexpected stream state \"QUIESCENT_NO_DATA\"\n"); - return BT_CTF_LTTNG_LIVE_ITERATOR_STATUS_ERROR; + BT_LOGF("Unexpected stream state \"QUIESCENT_NO_DATA\""); + abort(); case LTTNG_LIVE_STREAM_EOF: break; } @@ -853,7 +846,6 @@ enum bt_notification_iterator_status lttng_live_iterator_init( enum bt_notification_iterator_status ret = BT_NOTIFICATION_ITERATOR_STATUS_OK; struct lttng_live_stream_iterator_generic *s; - struct lttng_live_component *lttng_live; assert(it); @@ -864,7 +856,6 @@ enum bt_notification_iterator_status lttng_live_iterator_init( { struct lttng_live_no_stream_iterator *no_stream_iter = container_of(s, struct lttng_live_no_stream_iterator, p); - lttng_live = no_stream_iter->lttng_live; ret = bt_private_notification_iterator_set_user_data(it, no_stream_iter); if (ret) { goto error; @@ -875,7 +866,6 @@ enum bt_notification_iterator_status lttng_live_iterator_init( { struct lttng_live_stream_iterator *stream_iter = container_of(s, struct lttng_live_stream_iterator, p); - lttng_live = stream_iter->trace->session->lttng_live; ret = bt_private_notification_iterator_set_user_data(it, stream_iter); if (ret) { goto error; @@ -892,7 +882,7 @@ end: error: if (bt_private_notification_iterator_set_user_data(it, NULL) != BT_NOTIFICATION_ITERATOR_STATUS_OK) { - PERR("Error setting private data to NULL\n"); + BT_LOGE("Error setting private data to NULL"); } goto end; } @@ -909,13 +899,13 @@ struct bt_value *lttng_live_query_list_sessions(struct bt_component_class *comp_ url_value = bt_value_map_get(params, "url"); if (!url_value || bt_value_is_null(url_value) || !bt_value_is_string(url_value)) { - fprintf(stderr, "Mandatory \"url\" parameter missing\n"); + BT_LOGW("Mandatory \"url\" parameter missing"); goto error; } ret = bt_value_string_get(url_value, &url); if (ret != BT_VALUE_STATUS_OK) { - fprintf(stderr, "\"url\" parameter is required to be a string value\n"); + BT_LOGW("\"url\" parameter is required to be a string value"); goto error; } @@ -945,7 +935,7 @@ struct bt_value *lttng_live_query(struct bt_component_class *comp_class, return lttng_live_query_list_sessions(comp_class, params); } - fprintf(stderr, "Unknown query object `%s`\n", object); + BT_LOGW("Unknown query object `%s`", object); return NULL; } @@ -997,18 +987,17 @@ struct lttng_live_component *lttng_live_component_create(struct bt_value *params if (!lttng_live) { goto end; } - lttng_live->error_fp = stderr; /* TODO: make this an overridable parameter. */ lttng_live->max_query_size = MAX_QUERY_SIZE; BT_INIT_LIST_HEAD(<tng_live->sessions); value = bt_value_map_get(params, "url"); if (!value || bt_value_is_null(value) || !bt_value_is_string(value)) { - fprintf(stderr, "Mandatory \"url\" parameter missing\n"); + BT_LOGW("Mandatory \"url\" parameter missing"); goto error; } ret = bt_value_string_get(value, &url); if (ret != BT_VALUE_STATUS_OK) { - fprintf(stderr, "\"url\" parameter is required to be a string value\n"); + BT_LOGW("\"url\" parameter is required to be a string value"); goto error; } lttng_live->url = g_string_new(url); @@ -1044,8 +1033,6 @@ enum bt_component_status lttng_live_component_init(struct bt_private_component * struct lttng_live_component *lttng_live; enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - lttng_live_debug = g_strcmp0(getenv("LTTNG_LIVE_DEBUG"), "1") == 0; - /* Passes ownership of iter ref to lttng_live_component_create. */ lttng_live = lttng_live_component_create(params, component); if (!lttng_live) { @@ -1075,3 +1062,30 @@ error: lttng_live_component_destroy_data(lttng_live); return ret; } + +static +void __attribute__((constructor)) bt_lttng_live_logging_ctor(void) +{ + enum bt_logging_level log_level = BT_LOG_NONE; + const char *log_level_env = getenv("BABELTRACE_PLUGIN_LTTNG_LIVE_LOG_LEVEL"); + + if (!log_level_env) { + return; + } + + if (strcmp(log_level_env, "VERBOSE") == 0) { + log_level = BT_LOGGING_LEVEL_VERBOSE; + } else if (strcmp(log_level_env, "DEBUG") == 0) { + log_level = BT_LOGGING_LEVEL_DEBUG; + } else if (strcmp(log_level_env, "INFO") == 0) { + log_level = BT_LOGGING_LEVEL_INFO; + } else if (strcmp(log_level_env, "WARN") == 0) { + log_level = BT_LOGGING_LEVEL_WARN; + } else if (strcmp(log_level_env, "ERROR") == 0) { + log_level = BT_LOGGING_LEVEL_ERROR; + } else if (strcmp(log_level_env, "FATAL") == 0) { + log_level = BT_LOGGING_LEVEL_FATAL; + } + + bt_lttng_live_log_level = log_level; +} diff --git a/plugins/ctf/lttng-live/metadata.c b/plugins/ctf/lttng-live/metadata.c index b176e114..3124ff6c 100644 --- a/plugins/ctf/lttng-live/metadata.c +++ b/plugins/ctf/lttng-live/metadata.c @@ -31,10 +31,7 @@ #include #include -#define PRINT_ERR_STREAM lttng_live->error_fp -#define PRINT_PREFIX "lttng-live-metadata" -#define PRINT_DBG_CHECK lttng_live_debug -#include "../print.h" +#define BT_LOG_TAG "PLUGIN-CTF-LTTNG-LIVE-METADATA" #include "metadata.h" #include "../common/metadata/decoder.h" @@ -98,7 +95,6 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_metadata_update( struct lttng_live_trace *trace) { struct lttng_live_session *session = trace->session; - struct lttng_live_component *lttng_live = session->lttng_live; struct lttng_live_metadata *metadata = trace->metadata; ssize_t ret = 0; size_t size, len_read = 0; @@ -126,7 +122,7 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_metadata_update( /* Open for writing */ fp = bt_open_memstream(&metadata_buf, &size); if (!fp) { - PERR("Metadata open_memstream: %s\n", strerror(errno)); + BT_LOGE("Metadata open_memstream: %s", strerror(errno)); goto error; } @@ -182,7 +178,7 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_metadata_update( fp = bt_fmemopen(metadata_buf, len_read, "rb"); if (!fp) { - PERR("Cannot memory-open metadata buffer: %s\n", + BT_LOGE("Cannot memory-open metadata buffer: %s", strerror(errno)); goto error; } @@ -216,7 +212,7 @@ end: closeret = fclose(fp); if (closeret) { - PERR("Error on fclose"); + BT_LOGE("Error on fclose"); } } return status; @@ -236,8 +232,7 @@ int lttng_live_metadata_create_stream(struct lttng_live_session *session, } metadata->stream_id = stream_id; //TODO: add clock offset option - metadata->decoder = ctf_metadata_decoder_create( - session->lttng_live->error_fp, 0); + metadata->decoder = ctf_metadata_decoder_create(stderr, 0); if (!metadata->decoder) { goto error; } diff --git a/plugins/ctf/lttng-live/viewer-connection.c b/plugins/ctf/lttng-live/viewer-connection.c index 64cf81e7..e5d1fc13 100644 --- a/plugins/ctf/lttng-live/viewer-connection.c +++ b/plugins/ctf/lttng-live/viewer-connection.c @@ -37,17 +37,14 @@ #include #include +#define BT_LOG_TAG "PLUGIN-CTF-LTTNG-LIVE-VIEWER" + #include "lttng-live-internal.h" #include "viewer-connection.h" #include "lttng-viewer-abi.h" #include "data-stream.h" #include "metadata.h" -#define PRINT_ERR_STREAM viewer_connection->error_fp -#define PRINT_PREFIX "lttng-live-viewer-connection" -#define PRINT_DBG_CHECK lttng_live_debug -#include "../print.h" - static ssize_t lttng_live_recv(int fd, void *buf, size_t len) { ssize_t ret; @@ -114,7 +111,7 @@ static int parse_url(struct bt_live_viewer_connection *viewer_connection) goto end; } if (proto == 6) { - PERR("[error] IPv6 is currently unsupported by lttng-live\n"); + BT_LOGW("IPv6 is currently unsupported by lttng-live"); goto end; } /* TODO : parse for IPv6 as well */ @@ -134,7 +131,7 @@ static int parse_url(struct bt_live_viewer_connection *viewer_connection) goto end; } } else if (ret == 0) { - PERR("[error] Missing port number after delimitor ':'\n"); + BT_LOGW("Missing port number after delimitor ':'"); ret = -1; goto end; } @@ -148,7 +145,7 @@ static int parse_url(struct bt_live_viewer_connection *viewer_connection) } break; default: - PERR("[error] wrong delimitor : %c\n", remain[0][0]); + BT_LOGW("wrong delimitor : %c", remain[0][0]); ret = -1; goto end; } @@ -159,8 +156,8 @@ static int parse_url(struct bt_live_viewer_connection *viewer_connection) } if (strlen(remain[2]) == 0) { - PDBG("Connecting to hostname : %s, port : %d, " - "proto : IPv%d\n", + BT_LOGD("Connecting to hostname : %s, port : %d, " + "proto : IPv%d", viewer_connection->relay_hostname, viewer_connection->port, proto); @@ -171,14 +168,14 @@ static int parse_url(struct bt_live_viewer_connection *viewer_connection) viewer_connection->target_hostname, viewer_connection->session_name); if (ret != 2) { - PERR("[error] Format : " - "net:///host//\n"); + BT_LOGW("Format : " + "net:///host//"); goto end; } - PDBG("Connecting to hostname : %s, port : %d, " + BT_LOGD("Connecting to hostname : %s, port : %d, " "target hostname : %s, session name : %s, " - "proto : IPv%d\n", + "proto : IPv%d", viewer_connection->relay_hostname, viewer_connection->port, viewer_connection->target_hostname, @@ -207,36 +204,36 @@ static int lttng_live_handshake(struct bt_live_viewer_connection *viewer_connect ret_len = lttng_live_send(viewer_connection->control_sock, &cmd, sizeof(cmd)); if (ret_len < 0) { - PERR("Error sending cmd: %s\n", strerror(errno)); + BT_LOGE("Error sending cmd: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(cmd)); ret_len = lttng_live_send(viewer_connection->control_sock, &connect, sizeof(connect)); if (ret_len < 0) { - PERR("Error sending version: %s\n", strerror(errno)); + BT_LOGE("Error sending version: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(connect)); ret_len = lttng_live_recv(viewer_connection->control_sock, &connect, sizeof(connect)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("[error] Error receiving version: %s", strerror(errno)); + BT_LOGE("Error receiving version: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(connect)); - PDBG("Received viewer session ID : %" PRIu64 "\n", + BT_LOGD("Received viewer session ID : %" PRIu64, be64toh(connect.viewer_session_id)); - PDBG("Relayd version : %u.%u\n", be32toh(connect.major), + BT_LOGD("Relayd version : %u.%u", be32toh(connect.major), be32toh(connect.minor)); if (LTTNG_LIVE_MAJOR != be32toh(connect.major)) { - PERR("Incompatible lttng-relayd protocol\n"); + BT_LOGE("Incompatible lttng-relayd protocol"); goto error; } /* Use the smallest protocol version implemented. */ @@ -250,7 +247,7 @@ static int lttng_live_handshake(struct bt_live_viewer_connection *viewer_connect return ret; error: - PERR("Unable to establish connection\n"); + BT_LOGE("Unable to establish connection"); return -1; } @@ -266,13 +263,13 @@ static int lttng_live_connect_viewer(struct bt_live_viewer_connection *viewer_co host = gethostbyname(viewer_connection->relay_hostname); if (!host) { - PERR("[error] Cannot lookup hostname %s\n", + BT_LOGE("Cannot lookup hostname %s", viewer_connection->relay_hostname); goto error; } if ((viewer_connection->control_sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { - PERR("[error] Socket creation failed: %s\n", strerror(errno)); + BT_LOGE("Socket creation failed: %s", strerror(errno)); goto error; } @@ -283,7 +280,7 @@ static int lttng_live_connect_viewer(struct bt_live_viewer_connection *viewer_co if (connect(viewer_connection->control_sock, (struct sockaddr *) &server_addr, sizeof(struct sockaddr)) == -1) { - PERR("[error] Connection failed: %s\n", strerror(errno)); + BT_LOGE("Connection failed: %s", strerror(errno)); goto error; } if (lttng_live_handshake(viewer_connection)) { @@ -297,7 +294,7 @@ static int lttng_live_connect_viewer(struct bt_live_viewer_connection *viewer_co error: if (viewer_connection->control_sock >= 0) { if (close(viewer_connection->control_sock)) { - PERR("Close: %s", strerror(errno)); + BT_LOGE("Close: %s", strerror(errno)); } } viewer_connection->control_sock = -1; @@ -310,7 +307,7 @@ static void lttng_live_disconnect_viewer(struct bt_live_viewer_connection *viewe return; } if (close(viewer_connection->control_sock)) { - PERR("Close: %s", strerror(errno)); + BT_LOGE("Close: %s", strerror(errno)); viewer_connection->control_sock = -1; } } @@ -597,7 +594,7 @@ struct bt_value *bt_live_viewer_connection_list_sessions(struct bt_live_viewer_c results = bt_value_array_create(); if (!results) { - fprintf(stderr, "Error creating array\n"); + BT_LOGE("Error creating array"); goto error; } @@ -607,18 +604,18 @@ struct bt_value *bt_live_viewer_connection_list_sessions(struct bt_live_viewer_c ret_len = lttng_live_send(viewer_connection->control_sock, &cmd, sizeof(cmd)); if (ret_len < 0) { - fprintf(stderr, "Error sending cmd: %s\n", strerror(errno)); + BT_LOGE("Error sending cmd: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(cmd)); ret_len = lttng_live_recv(viewer_connection->control_sock, &list, sizeof(list)); if (ret_len == 0) { - fprintf(stderr, "Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - fprintf(stderr, "Error receiving session list: %s\n", strerror(errno)); + BT_LOGE("Error receiving session list: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(list)); @@ -630,11 +627,11 @@ struct bt_value *bt_live_viewer_connection_list_sessions(struct bt_live_viewer_c ret_len = lttng_live_recv(viewer_connection->control_sock, &lsession, sizeof(lsession)); if (ret_len == 0) { - fprintf(stderr, "Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - fprintf(stderr, "Error receiving session: %s\n", strerror(errno)); + BT_LOGE("Error receiving session: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(lsession)); @@ -671,18 +668,18 @@ int lttng_live_query_session_ids(struct lttng_live_component *lttng_live) ret_len = lttng_live_send(viewer_connection->control_sock, &cmd, sizeof(cmd)); if (ret_len < 0) { - PERR("Error sending cmd: %s\n", strerror(errno)); + BT_LOGE("Error sending cmd: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(cmd)); ret_len = lttng_live_recv(viewer_connection->control_sock, &list, sizeof(list)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving session list: %s\n", strerror(errno)); + BT_LOGE("Error receiving session list: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(list)); @@ -692,11 +689,11 @@ int lttng_live_query_session_ids(struct lttng_live_component *lttng_live) ret_len = lttng_live_recv(viewer_connection->control_sock, &lsession, sizeof(lsession)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving session: %s\n", strerror(errno)); + BT_LOGE("Error receiving session: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(lsession)); @@ -718,7 +715,7 @@ int lttng_live_query_session_ids(struct lttng_live_component *lttng_live) return 0; error: - PERR("Unable to query session ids\n"); + BT_LOGE("Unable to query session ids"); return -1; } @@ -737,24 +734,24 @@ int lttng_live_create_viewer_session(struct lttng_live_component *lttng_live) ret_len = lttng_live_send(viewer_connection->control_sock, &cmd, sizeof(cmd)); if (ret_len < 0) { - PERR("Error sending cmd: %s\n", strerror(errno)); + BT_LOGE("Error sending cmd: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(cmd)); ret_len = lttng_live_recv(viewer_connection->control_sock, &resp, sizeof(resp)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving create session reply: %s\n", strerror(errno)); + BT_LOGE("Error receiving create session reply: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(resp)); if (be32toh(resp.status) != LTTNG_VIEWER_CREATE_SESSION_OK) { - PERR("Error creating viewer session\n"); + BT_LOGE("Error creating viewer session"); goto error; } if (lttng_live_query_session_ids(lttng_live)) { @@ -777,7 +774,7 @@ int receive_streams(struct lttng_live_session *session, struct bt_live_viewer_connection *viewer_connection = lttng_live->viewer_connection; - PDBG("Getting %" PRIu32 " new streams:\n", stream_count); + BT_LOGD("Getting %" PRIu32 " new streams:", stream_count); for (i = 0; i < stream_count; i++) { struct lttng_viewer_stream stream; struct lttng_live_stream_iterator *live_stream; @@ -786,11 +783,11 @@ int receive_streams(struct lttng_live_session *session, ret_len = lttng_live_recv(viewer_connection->control_sock, &stream, sizeof(stream)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving stream\n"); + BT_LOGE("Error receiving stream"); goto error; } assert(ret_len == sizeof(stream)); @@ -800,24 +797,24 @@ int receive_streams(struct lttng_live_session *session, ctf_trace_id = be64toh(stream.ctf_trace_id); if (stream.metadata_flag) { - PDBG(" metadata stream %" PRIu64 " : %s/%s\n", + BT_LOGD(" metadata stream %" PRIu64 " : %s/%s", stream_id, stream.path_name, stream.channel_name); if (lttng_live_metadata_create_stream(session, ctf_trace_id, stream_id)) { - PERR("Error creating metadata stream\n"); + BT_LOGE("Error creating metadata stream"); goto error; } session->lazy_stream_notif_init = true; } else { - PDBG(" stream %" PRIu64 " : %s/%s\n", + BT_LOGD(" stream %" PRIu64 " : %s/%s", stream_id, stream.path_name, stream.channel_name); live_stream = lttng_live_stream_iterator_create(session, ctf_trace_id, stream_id); if (!live_stream) { - PERR("Error creating stream\n"); + BT_LOGE("Error creating streamn"); goto error; } } @@ -857,25 +854,25 @@ int lttng_live_attach_session(struct lttng_live_session *session) ret_len = lttng_live_send(viewer_connection->control_sock, &cmd, sizeof(cmd)); if (ret_len < 0) { - PERR("Error sending cmd: %s\n", strerror(errno)); + BT_LOGE("Error sending cmd: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(cmd)); ret_len = lttng_live_send(viewer_connection->control_sock, &rq, sizeof(rq)); if (ret_len < 0) { - PERR("Error sending attach request: %s\n", strerror(errno)); + BT_LOGE("Error sending attach request: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(rq)); ret_len = lttng_live_recv(viewer_connection->control_sock, &rp, sizeof(rp)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving attach response: %s\n", strerror(errno)); + BT_LOGE("Error receiving attach response: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(rp)); @@ -885,19 +882,19 @@ int lttng_live_attach_session(struct lttng_live_session *session) case LTTNG_VIEWER_ATTACH_OK: break; case LTTNG_VIEWER_ATTACH_UNK: - PERR("Session id %" PRIu64 " is unknown\n", session_id); + BT_LOGW("Session id %" PRIu64 " is unknown", session_id); goto error; case LTTNG_VIEWER_ATTACH_ALREADY: - PERR("There is already a viewer attached to this session\n"); + BT_LOGW("There is already a viewer attached to this session"); goto error; case LTTNG_VIEWER_ATTACH_NOT_LIVE: - PERR("Not a live session\n"); + BT_LOGW("Not a live session"); goto error; case LTTNG_VIEWER_ATTACH_SEEK_ERR: - PERR("Wrong seek parameter\n"); + BT_LOGE("Wrong seek parameter"); goto error; default: - PERR("Unknown attach return code %u\n", be32toh(rp.status)); + BT_LOGE("Unknown attach return code %u", be32toh(rp.status)); goto error; } @@ -940,25 +937,25 @@ int lttng_live_detach_session(struct lttng_live_session *session) ret_len = lttng_live_send(viewer_connection->control_sock, &cmd, sizeof(cmd)); if (ret_len < 0) { - PERR("Error sending cmd: %s\n", strerror(errno)); + BT_LOGE("Error sending cmd: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(cmd)); ret_len = lttng_live_send(viewer_connection->control_sock, &rq, sizeof(rq)); if (ret_len < 0) { - PERR("Error sending detach request: %s\n", strerror(errno)); + BT_LOGE("Error sending detach request: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(rq)); ret_len = lttng_live_recv(viewer_connection->control_sock, &rp, sizeof(rp)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving detach response: %s\n", strerror(errno)); + BT_LOGE("Error receiving detach response: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(rp)); @@ -967,13 +964,13 @@ int lttng_live_detach_session(struct lttng_live_session *session) case LTTNG_VIEWER_DETACH_SESSION_OK: break; case LTTNG_VIEWER_DETACH_SESSION_UNK: - PERR("Session id %" PRIu64 " is unknown\n", session_id); + BT_LOGW("Session id %" PRIu64 " is unknown", session_id); goto error; case LTTNG_VIEWER_DETACH_SESSION_ERR: - PERR("Error detaching session id %" PRIu64 "\n", session_id); + BT_LOGW("Error detaching session id %" PRIu64 "", session_id); goto error; default: - PERR("Unknown detach return code %u\n", be32toh(rp.status)); + BT_LOGE("Unknown detach return code %u", be32toh(rp.status)); goto error; } @@ -1009,63 +1006,63 @@ ssize_t lttng_live_get_one_metadata_packet(struct lttng_live_trace *trace, ret_len = lttng_live_send(viewer_connection->control_sock, &cmd, sizeof(cmd)); if (ret_len < 0) { - PERR("Error sending cmd: %s\n", strerror(errno)); + BT_LOGE("Error sending cmd: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(cmd)); ret_len = lttng_live_send(viewer_connection->control_sock, &rq, sizeof(rq)); if (ret_len < 0) { - PERR("Error sending get_metadata request: %s\n", strerror(errno)); + BT_LOGE("Error sending get_metadata request: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(rq)); ret_len = lttng_live_recv(viewer_connection->control_sock, &rp, sizeof(rp)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving get_metadata response: %s\n", strerror(errno)); + BT_LOGE("Error receiving get_metadata response: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(rp)); switch (be32toh(rp.status)) { case LTTNG_VIEWER_METADATA_OK: - PDBG("get_metadata : OK\n"); + BT_LOGD("get_metadata : OK"); break; case LTTNG_VIEWER_NO_NEW_METADATA: - PDBG("get_metadata : NO NEW\n"); + BT_LOGD("get_metadata : NO NEW"); ret = 0; goto end; case LTTNG_VIEWER_METADATA_ERR: - PDBG("get_metadata : ERR\n"); + BT_LOGD("get_metadata : ERR"); goto error; default: - PDBG("get_metadata : UNKNOWN\n"); + BT_LOGD("get_metadata : UNKNOWN"); goto error; } len = be64toh(rp.len); - PDBG("Writing %" PRIu64" bytes to metadata\n", len); + BT_LOGD("Writing %" PRIu64" bytes to metadata", len); if (len <= 0) { goto error; } data = zmalloc(len); if (!data) { - PERR("relay data zmalloc: %s", strerror(errno)); + BT_LOGE("relay data zmalloc: %s", strerror(errno)); goto error; } ret_len = lttng_live_recv(viewer_connection->control_sock, data, len); if (ret_len == 0) { - PERR("[error] Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error_free_data; } if (ret_len < 0) { - PERR("[error] Error receiving trace packet: %s", strerror(errno)); + BT_LOGE("Error receiving trace packet: %s", strerror(errno)); goto error_free_data; } assert(ret_len == len); @@ -1074,7 +1071,7 @@ ssize_t lttng_live_get_one_metadata_packet(struct lttng_live_trace *trace, ret_len = fwrite(data, 1, len, fp); } while (ret_len < 0 && errno == EINTR); if (ret_len < 0) { - PERR("[error] Writing in the metadata fp\n"); + BT_LOGE("Writing in the metadata fp"); goto error_free_data; } assert(ret_len == len); @@ -1132,25 +1129,25 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_get_next_index(struct lttng_li ret_len = lttng_live_send(viewer_connection->control_sock, &cmd, sizeof(cmd)); if (ret_len < 0) { - PERR("Error sending cmd: %s\n", strerror(errno)); + BT_LOGE("Error sending cmd: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(cmd)); ret_len = lttng_live_send(viewer_connection->control_sock, &rq, sizeof(rq)); if (ret_len < 0) { - PERR("Error sending get_next_index request: %s\n", strerror(errno)); + BT_LOGE("Error sending get_next_index request: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(rq)); ret_len = lttng_live_recv(viewer_connection->control_sock, &rp, sizeof(rp)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving get_next_index response: %s\n", strerror(errno)); + BT_LOGE("Error receiving get_next_index response: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(rp)); @@ -1163,7 +1160,7 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_get_next_index(struct lttng_li { uint64_t ctf_stream_class_id; - PDBG("get_next_index: inactive\n"); + BT_LOGD("get_next_index: inactive"); memset(index, 0, sizeof(struct packet_index)); index->ts_cycles.timestamp_end = be64toh(rp.timestamp_end); stream->current_inactivity_timestamp = index->ts_cycles.timestamp_end; @@ -1181,7 +1178,7 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_get_next_index(struct lttng_li { uint64_t ctf_stream_class_id; - PDBG("get_next_index: OK\n"); + BT_LOGD("get_next_index: OK"); lttng_index_to_packet_index(&rp, index); ctf_stream_class_id = be64toh(rp.stream_id); if (stream->ctf_stream_class_id != -1ULL) { @@ -1196,35 +1193,35 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_get_next_index(struct lttng_li index->ts_cycles.timestamp_end; if (flags & LTTNG_VIEWER_FLAG_NEW_METADATA) { - PDBG("get_next_index: new metadata needed\n"); + BT_LOGD("get_next_index: new metadata needed"); trace->new_metadata_needed = true; } if (flags & LTTNG_VIEWER_FLAG_NEW_STREAM) { - PDBG("get_next_index: new streams needed\n"); + BT_LOGD("get_next_index: new streams needed"); lttng_live_need_new_streams(lttng_live); } break; } case LTTNG_VIEWER_INDEX_RETRY: - PDBG("get_next_index: retry\n"); + BT_LOGD("get_next_index: retry"); memset(index, 0, sizeof(struct packet_index)); retstatus = BT_CTF_LTTNG_LIVE_ITERATOR_STATUS_AGAIN; stream->state = LTTNG_LIVE_STREAM_ACTIVE_NO_DATA; goto end; case LTTNG_VIEWER_INDEX_HUP: - PDBG("get_next_index: stream hung up\n"); + BT_LOGD("get_next_index: stream hung up"); memset(index, 0, sizeof(struct packet_index)); index->offset = EOF; retstatus = BT_CTF_LTTNG_LIVE_ITERATOR_STATUS_END; stream->state = LTTNG_LIVE_STREAM_EOF; break; case LTTNG_VIEWER_INDEX_ERR: - PERR("get_next_index: error\n"); + BT_LOGE("get_next_index: error"); memset(index, 0, sizeof(struct packet_index)); stream->state = LTTNG_LIVE_STREAM_ACTIVE_NO_DATA; goto error; default: - PERR("get_next_index: unkwown value\n"); + BT_LOGE("get_next_index: unknown value"); memset(index, 0, sizeof(struct packet_index)); stream->state = LTTNG_LIVE_STREAM_ACTIVE_NO_DATA; goto error; @@ -1252,7 +1249,7 @@ enum bt_ctf_notif_iter_medium_status lttng_live_get_stream_bytes(struct lttng_li lttng_live->viewer_connection; struct lttng_live_trace *trace = stream->trace; - PDBG("lttng_live_get_stream_bytes: offset=%" PRIu64 ", req_len=%" PRIu64 "\n", + BT_LOGD("lttng_live_get_stream_bytes: offset=%" PRIu64 ", req_len=%" PRIu64, offset, req_len); cmd.cmd = htobe32(LTTNG_VIEWER_GET_PACKET); cmd.data_size = htobe64((uint64_t) sizeof(rq)); @@ -1265,30 +1262,30 @@ enum bt_ctf_notif_iter_medium_status lttng_live_get_stream_bytes(struct lttng_li ret_len = lttng_live_send(viewer_connection->control_sock, &cmd, sizeof(cmd)); if (ret_len < 0) { - PERR("Error sending cmd: %s\n", strerror(errno)); + BT_LOGE("Error sending cmd: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(cmd)); ret_len = lttng_live_send(viewer_connection->control_sock, &rq, sizeof(rq)); if (ret_len < 0) { - PERR("Error sending get_data request: %s\n", strerror(errno)); + BT_LOGE("Error sending get_data request: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(rq)); ret_len = lttng_live_recv(viewer_connection->control_sock, &rp, sizeof(rp)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving get_data response: %s\n", strerror(errno)); + BT_LOGE("Error receiving get_data response: %s", strerror(errno)); goto error; } if (ret_len != sizeof(rp)) { - PERR("[error] get_data_packet: expected %zu" - ", received %zd\n", sizeof(rp), + BT_LOGE("get_data_packet: expected %zu" + ", received %zd", sizeof(rp), ret_len); goto error; } @@ -1299,20 +1296,20 @@ enum bt_ctf_notif_iter_medium_status lttng_live_get_stream_bytes(struct lttng_li switch (status) { case LTTNG_VIEWER_GET_PACKET_OK: req_len = be32toh(rp.len); - PDBG("get_data_packet: Ok, packet size : %" PRIu64 "\n", req_len); + BT_LOGD("get_data_packet: Ok, packet size : %" PRIu64 "", req_len); break; case LTTNG_VIEWER_GET_PACKET_RETRY: /* Unimplemented by relay daemon */ - PDBG("get_data_packet: retry\n"); + BT_LOGD("get_data_packet: retry"); retstatus = BT_CTF_NOTIF_ITER_MEDIUM_STATUS_AGAIN; goto end; case LTTNG_VIEWER_GET_PACKET_ERR: if (flags & LTTNG_VIEWER_FLAG_NEW_METADATA) { - PDBG("get_data_packet: new metadata needed, try again later\n"); + BT_LOGD("get_data_packet: new metadata needed, try again later"); trace->new_metadata_needed = true; } if (flags & LTTNG_VIEWER_FLAG_NEW_STREAM) { - PDBG("get_data_packet: new streams needed, try again later\n"); + BT_LOGD("get_data_packet: new streams needed, try again later"); lttng_live_need_new_streams(lttng_live); } if (flags & (LTTNG_VIEWER_FLAG_NEW_METADATA @@ -1320,13 +1317,13 @@ enum bt_ctf_notif_iter_medium_status lttng_live_get_stream_bytes(struct lttng_li retstatus = BT_CTF_NOTIF_ITER_MEDIUM_STATUS_AGAIN; goto end; } - PERR("get_data_packet: error\n"); + BT_LOGE("get_data_packet: error"); goto error; case LTTNG_VIEWER_GET_PACKET_EOF: retstatus = BT_CTF_NOTIF_ITER_MEDIUM_STATUS_EOF; goto end; default: - PDBG("get_data_packet: unknown\n"); + BT_LOGE("get_data_packet: unknown"); goto error; } @@ -1336,11 +1333,11 @@ enum bt_ctf_notif_iter_medium_status lttng_live_get_stream_bytes(struct lttng_li ret_len = lttng_live_recv(viewer_connection->control_sock, buf, req_len); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving trace packet: %s\n", strerror(errno)); + BT_LOGE("Error receiving trace packet: %s", strerror(errno)); goto error; } assert(ret_len == req_len); @@ -1384,25 +1381,25 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_get_new_streams( ret_len = lttng_live_send(viewer_connection->control_sock, &cmd, sizeof(cmd)); if (ret_len < 0) { - PERR("Error sending cmd: %s\n", strerror(errno)); + BT_LOGE("Error sending cmd: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(cmd)); ret_len = lttng_live_send(viewer_connection->control_sock, &rq, sizeof(rq)); if (ret_len < 0) { - PERR("Error sending get_new_streams request: %s\n", strerror(errno)); + BT_LOGE("Error sending get_new_streams request: %s", strerror(errno)); goto error; } assert(ret_len == sizeof(rq)); ret_len = lttng_live_recv(viewer_connection->control_sock, &rp, sizeof(rp)); if (ret_len == 0) { - PERR("Remote side has closed connection\n"); + BT_LOGI("Remote side has closed connection"); goto error; } if (ret_len < 0) { - PERR("Error receiving get_new_streams response\n"); + BT_LOGE("Error receiving get_new_streams response"); goto error; } assert(ret_len == sizeof(rp)); @@ -1422,10 +1419,10 @@ enum bt_ctf_lttng_live_iterator_status lttng_live_get_new_streams( status = BT_CTF_LTTNG_LIVE_ITERATOR_STATUS_END; goto end; case LTTNG_VIEWER_NEW_STREAMS_ERR: - PERR("get_new_streams error\n"); + BT_LOGE("get_new_streams error"); goto error; default: - PERR("Unknown return code %u\n", be32toh(rp.status)); + BT_LOGE("Unknown return code %u", be32toh(rp.status)); goto error; } @@ -1457,15 +1454,15 @@ struct bt_live_viewer_connection * goto error; } - PDBG("Establishing connection to url \"%s\"...\n", url); + BT_LOGD("Establishing connection to url \"%s\"...", url); if (lttng_live_connect_viewer(viewer_connection)) { goto error_report; } - PDBG("Connection to url \"%s\" is established\n", url); + BT_LOGD("Connection to url \"%s\" is established", url); return viewer_connection; error_report: - printf_verbose("Failure to establish connection to url \"%s\"\n", url); + BT_LOGW("Failure to establish connection to url \"%s\"", url); error: g_free(viewer_connection); return NULL; @@ -1474,7 +1471,7 @@ error: BT_HIDDEN void bt_live_viewer_connection_destroy(struct bt_live_viewer_connection *viewer_connection) { - PDBG("Closing connection to url \"%s\"\n", viewer_connection->url->str); + BT_LOGD("Closing connection to url \"%s\"", viewer_connection->url->str); lttng_live_disconnect_viewer(viewer_connection); g_string_free(viewer_connection->url, TRUE); g_free(viewer_connection); -- 2.34.1