Move to kernel style SPDX license identifiers
[babeltrace.git] / src / logging / comp-logging.h
index aae775c579266e55d1d02013abe5b7da81436bde..d4ce06086498021790db6ff971baace0036997d0 100644 (file)
@@ -1,28 +1,12 @@
-#ifndef BABELTRACE_LOGGING_COMP_LOGGING_H
-#define BABELTRACE_LOGGING_COMP_LOGGING_H
-
 /*
- * Copyright 2019 Philippe Proulx <pproulx@efficios.com>
+ * SPDX-License-Identifier: MIT
  *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
+ * Copyright 2019 Philippe Proulx <pproulx@efficios.com>
  */
 
+#ifndef BABELTRACE_LOGGING_COMP_LOGGING_H
+#define BABELTRACE_LOGGING_COMP_LOGGING_H
+
 #ifndef BT_LOG_TAG
 # error Please define a tag with BT_LOG_TAG before including this file.
 #endif
 #define BT_COMP_LOG_SUPPORTED
 
 /* Logs and appends error cause from component context. */
-#define BT_COMP_LOG_APPEND_CAUSE(_self_comp, _lvl, _fmt, ...)                  \
+#define BT_COMP_LOG_APPEND_CAUSE(_lvl, _self_comp, _fmt, ...)                  \
        do {                                                                    \
                BT_COMP_LOG(_lvl, _self_comp, _fmt, ##__VA_ARGS__);             \
                (void) BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_COMPONENT(     \
 
 /* Logs error and appends error cause from component context. */
 #define BT_COMP_LOGE_APPEND_CAUSE(_self_comp, _fmt, ...)                       \
-       BT_COMP_LOG_APPEND_CAUSE(_self_comp, BT_LOG_ERROR, _fmt, ##__VA_ARGS__)
+       BT_COMP_LOG_APPEND_CAUSE(BT_LOG_ERROR, _self_comp, _fmt, ##__VA_ARGS__)
+
+/*
+ * Logs and appends error cause from component context - the errno edition.
+ */
+#define BT_COMP_LOG_APPEND_CAUSE_ERRNO(_lvl, _self_comp, _msg, _fmt, ...)              \
+       do {                                                                            \
+               const char *error_str = g_strerror(errno);                              \
+               BT_COMP_LOG(_lvl, _self_comp, _msg ": %s" _fmt, error_str,              \
+                       ##__VA_ARGS__);                                                 \
+               (void) BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_COMPONENT(             \
+                       _self_comp, _msg ": %s" _fmt, error_str, ##__VA_ARGS__);        \
+       } while (0)
+
+/*
+ * Logs error and appends error cause from component context - the errno
+ * edition.
+ */
+#define BT_COMP_LOGE_APPEND_CAUSE_ERRNO(_self_comp, _msg, _fmt, ...)                           \
+       BT_COMP_LOG_APPEND_CAUSE_ERRNO(BT_LOG_ERROR, _self_comp, _msg, _fmt, ##__VA_ARGS__)
+
+/* Logs error from component class context. */
+#define BT_COMP_CLASS_LOGE(_self_comp_class, _fmt, ...)                                        \
+       BT_COMP_CLASS_LOG(BT_LOG_ERROR,_self_comp_class, _fmt, ##__VA_ARGS__)
+
+/* Logs error and errno string from component class context. */
+#define BT_COMP_CLASS_LOG_ERRNO(_lvl, _self_comp_class, _msg, _fmt, ...)               \
+       BT_LOG_WRITE_ERRNO((_lvl), BT_LOG_TAG, _msg,                                    \
+               _BT_COMP_LOG_COMP_PREFIX _fmt,                                          \
+               bt_component_class_get_name(                                            \
+                       bt_self_component_class_as_component_class(_self_comp_class))   \
+               ##__VA_ARGS__)
 
 /* Logs and appends error cause from component class context. */
-#define BT_COMP_CLASS_LOG_APPEND_CAUSE(_self_comp_class, _lvl, _fmt, ...)              \
+#define BT_COMP_CLASS_LOG_APPEND_CAUSE(_lvl, _self_comp_class, _fmt, ...)              \
        do {                                                                            \
                BT_COMP_CLASS_LOG(_lvl, _self_comp_class, _fmt, ##__VA_ARGS__);         \
                (void) BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_COMPONENT_CLASS(       \
 
 /* Logs error and appends error cause from component class context. */
 #define BT_COMP_CLASS_LOGE_APPEND_CAUSE(_self_comp_class, _fmt, ...)                           \
-       BT_COMP_CLASS_LOG_APPEND_CAUSE(_self_comp_class, BT_LOG_ERROR, _fmt, ##__VA_ARGS__)
+       BT_COMP_CLASS_LOG_APPEND_CAUSE(BT_LOG_ERROR, _self_comp_class, _fmt, ##__VA_ARGS__)
 
 /*
  * Logs and appends error cause from component class context - the errno
  * edition.
  */
-#define BT_COMP_CLASS_LOG_APPEND_CAUSE_ERRNO(_self_comp_class, _lvl, _msg, _fmt, ...)  \
+#define BT_COMP_CLASS_LOG_APPEND_CAUSE_ERRNO(_lvl, _self_comp_class, _msg, _fmt, ...)  \
        do {                                                                            \
                const char *error_str = g_strerror(errno);                              \
                BT_COMP_CLASS_LOG(_lvl, _self_comp_class, _msg ": %s" _fmt, error_str,  \
  * Logs error and appends error cause from component class context - the errno
  * edition.
  */
-#define BT_COMP_CLASS_LOGE_APPEND_CAUSE_ERRNO(_self_comp_class, _fmt, ...)             \
-       BT_COMP_CLASS_LOG_APPEND_CAUSE_ERRNO(_self_comp_class, BT_LOG_ERROR, _fmt,      \
+#define BT_COMP_CLASS_LOGE_APPEND_CAUSE_ERRNO(_self_comp_class, _msg, _fmt, ...)               \
+       BT_COMP_CLASS_LOG_APPEND_CAUSE_ERRNO(BT_LOG_ERROR, _self_comp_class, _msg, _fmt,        \
                ##__VA_ARGS__)
 
+/*
+ * Logs error from component or component class context, depending on whichever
+ * is set.
+ */
+#define BT_COMP_OR_COMP_CLASS_LOG(_lvl, _self_comp, _self_comp_class, _fmt, ...)               \
+       do {                                                                                    \
+               /* Only one of `_self_comp` and `_self_comp_class` must be set. */              \
+               BT_ASSERT((!!(_self_comp) != (!!_self_comp_class)));                            \
+               if (_self_comp) {                                                               \
+                       BT_COMP_LOG(_lvl, _self_comp, _fmt, ##__VA_ARGS__);                     \
+               } else {                                                                        \
+                       BT_COMP_CLASS_LOG(_lvl, _self_comp_class, _fmt, ##__VA_ARGS__);         \
+               }                                                                               \
+       } while (0)
+
+#define BT_COMP_OR_COMP_CLASS_LOGE(_self_comp, _self_comp_class, _fmt, ...)                    \
+       BT_COMP_OR_COMP_CLASS_LOG(BT_LOG_ERROR,_self_comp, _self_comp_class, _fmt, ##__VA_ARGS__)
+#define BT_COMP_OR_COMP_CLASS_LOGW(_self_comp, _self_comp_class, _fmt, ...)                    \
+       BT_COMP_OR_COMP_CLASS_LOG(BT_LOG_WARNING,_self_comp, _self_comp_class, _fmt, ##__VA_ARGS__)
+#define BT_COMP_OR_COMP_CLASS_LOGI(_self_comp, _self_comp_class, _fmt, ...)                    \
+       BT_COMP_OR_COMP_CLASS_LOG(BT_LOG_INFO,_self_comp, _self_comp_class, _fmt, ##__VA_ARGS__)
+#define BT_COMP_OR_COMP_CLASS_LOGD(_self_comp, _self_comp_class, _fmt, ...)                    \
+       BT_COMP_OR_COMP_CLASS_LOG(BT_LOG_DEBUG,_self_comp, _self_comp_class, _fmt, ##__VA_ARGS__)
+
+/*
+ * Logs error with errno string from component or component class context,
+ * depending on whichever is set.
+ */
+#define BT_COMP_OR_COMP_CLASS_LOG_ERRNO(_lvl, _self_comp, _self_comp_class, _msg, _fmt, ...)   \
+       do {                                                                                    \
+               /* Only one of `_self_comp` and `_self_comp_class` must be set. */              \
+               BT_ASSERT((!!(_self_comp) != (!!_self_comp_class)));                            \
+               if (_self_comp) {                                                               \
+                       BT_COMP_LOG_ERRNO(_lvl, _self_comp, _msg, _fmt, ##__VA_ARGS__);         \
+               } else {                                                                        \
+                       BT_COMP_CLASS_LOG_ERRNO(_lvl, _self_comp_class, _msg, _fmt, ##__VA_ARGS__);     \
+               }                                                                               \
+       } while (0)
+
+#define BT_COMP_OR_COMP_CLASS_LOGW_ERRNO(_self_comp, _self_comp_class, _msg, _fmt, ...)                \
+       BT_COMP_OR_COMP_CLASS_LOG_ERRNO(BT_LOG_WARNING, _self_comp, _self_comp_class, _msg, _fmt, ##__VA_ARGS__)
+
 /*
  * Logs error and appends error cause from component or component class context,
  * depending on whichever is set.
                }                                                                               \
        } while (0)
 
+/*
+ * Logs error and appends error cause from message iterator context.
+ *
+ * There is no BT_SELF_MSG_LOGE yet, so use BT_COMP_LOGE for now.
+ */
+#define BT_MSG_ITER_LOGE_APPEND_CAUSE(_self_msg_iter, _fmt, ...)                                       \
+       do {                                                                                            \
+               BT_COMP_LOG(BT_LOG_ERROR, bt_self_message_iterator_borrow_component(_self_msg_iter),    \
+                       _fmt, ##__VA_ARGS__);                                                           \
+               (void) BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_MESSAGE_ITERATOR(                      \
+                       _self_msg_iter, _fmt, ##__VA_ARGS__);                                           \
+       } while (0)
+
 #endif /* BABELTRACE_LOGGING_COMP_LOGGING_H */
This page took 0.026235 seconds and 4 git commands to generate.