/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (c) 2016 wonder-mice
+ *
* This is zf_log.h, modified with Babeltrace prefixes.
* See <https://github.com/wonder-mice/zf_log/>.
- * See logging/LICENSE in the Babeltrace source tree.
*/
#pragma once
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <babeltrace2/logging.h>
+#include <babeltrace2/babeltrace.h>
+
+/* Access private __BT_LOGGING_LEVEL_* macros. */
+#define __BT_IN_BABELTRACE_H
+#include <babeltrace2/logging-defs.h>
+#undef __BT_IN_BABELTRACE_H
+
#include "common/macros.h"
#include "common/assert.h"
* - BT_LOG_ERROR - happened something possible, but highly unexpected. The
* process is able to recover and continue execution.
* Example: out of memory (could also be FATAL if not handled properly).
- * - BT_LOG_WARN - happened something that *usually* should not happen and
+ * - BT_LOG_WARNING - happened something that *usually* should not happen and
* significantly changes application behavior for some period of time.
* Example: configuration file not found, auth error.
* - BT_LOG_INFO - happened significant life cycle event or major state
* should be empty or very small. Choosing a right log level is as important as
* providing short and self descriptive log message.
*/
-#define BT_LOG_TRACE BT_LOGGING_LEVEL_TRACE
-#define BT_LOG_DEBUG BT_LOGGING_LEVEL_DEBUG
-#define BT_LOG_INFO BT_LOGGING_LEVEL_INFO
-#define BT_LOG_WARN BT_LOGGING_LEVEL_WARN
-#define BT_LOG_ERROR BT_LOGGING_LEVEL_ERROR
-#define BT_LOG_FATAL BT_LOGGING_LEVEL_FATAL
-#define BT_LOG_NONE BT_LOGGING_LEVEL_NONE
+#define BT_LOG_TRACE __BT_LOGGING_LEVEL_TRACE
+#define BT_LOG_DEBUG __BT_LOGGING_LEVEL_DEBUG
+#define BT_LOG_INFO __BT_LOGGING_LEVEL_INFO
+#define BT_LOG_WARNING __BT_LOGGING_LEVEL_WARNING
+#define BT_LOG_ERROR __BT_LOGGING_LEVEL_ERROR
+#define BT_LOG_FATAL __BT_LOGGING_LEVEL_FATAL
+#define BT_LOG_NONE __BT_LOGGING_LEVEL_NONE
/* "Current" log level is a compile time check and has no runtime overhead. Log
* level that is below current log level it said to be "disabled".
#define BT_LOG_SRCLOC_SHORT 1
#define BT_LOG_SRCLOC_LONG 2
-/* Source location format is configured per compilation module (.c/.cpp/.m
- * file) by defining BT_LOG_DEF_SRCLOC or BT_LOG_SRCLOC. BT_LOG_SRCLOC has
- * higer priority and when defined overrides value provided by
- * BT_LOG_DEF_SRCLOC.
- *
- * Common practice is to define default format with BT_LOG_DEF_SRCLOC in
- * build script (e.g. Makefile, CMakeLists.txt, gyp, etc.) for the entire
- * project or target:
- *
- * CC_ARGS := -DBT_LOG_DEF_SRCLOC=BT_LOG_SRCLOC_LONG
- *
- * And when necessary to override it with BT_LOG_SRCLOC in .c/.cpp/.m files
- * before including bt_log.h:
- *
- * #define BT_LOG_SRCLOC BT_LOG_SRCLOC_NONE
- * #include "logging.h"
- *
- * If both BT_LOG_DEF_SRCLOC and BT_LOG_SRCLOC are undefined, then
- * BT_LOG_SRCLOC_NONE will be used for release builds (BT_DEBUG_MODE is
- * NOT defined) and BT_LOG_SRCLOC_LONG otherwise (BT_DEBUG_MODE is
- * defined).
- */
-#if defined(BT_LOG_SRCLOC)
- #define _BT_LOG_SRCLOC BT_LOG_SRCLOC
-#elif defined(BT_LOG_DEF_SRCLOC)
- #define _BT_LOG_SRCLOC BT_LOG_DEF_SRCLOC
-#else
- #ifdef BT_DEBUG_MODE
- #define _BT_LOG_SRCLOC BT_LOG_SRCLOC_LONG
- #else
- #define _BT_LOG_SRCLOC BT_LOG_SRCLOC_NONE
- #endif
-#endif
+#define _BT_LOG_SRCLOC BT_LOG_SRCLOC_LONG
+
#if BT_LOG_SRCLOC_LONG == _BT_LOG_SRCLOC
#define _BT_LOG_SRCLOC_FUNCTION _BT_LOG_FUNCTION
#else
#define BT_LOG_ENABLED_TRACE BT_LOG_ENABLED(BT_LOG_TRACE)
#define BT_LOG_ENABLED_DEBUG BT_LOG_ENABLED(BT_LOG_DEBUG)
#define BT_LOG_ENABLED_INFO BT_LOG_ENABLED(BT_LOG_INFO)
-#define BT_LOG_ENABLED_WARN BT_LOG_ENABLED(BT_LOG_WARN)
+#define BT_LOG_ENABLED_WARNING BT_LOG_ENABLED(BT_LOG_WARNING)
#define BT_LOG_ENABLED_ERROR BT_LOG_ENABLED(BT_LOG_ERROR)
#define BT_LOG_ENABLED_FATAL BT_LOG_ENABLED(BT_LOG_FATAL)
#define BT_LOG_ON_TRACE BT_LOG_ON(BT_LOG_TRACE)
#define BT_LOG_ON_DEBUG BT_LOG_ON(BT_LOG_DEBUG)
#define BT_LOG_ON_INFO BT_LOG_ON(BT_LOG_INFO)
-#define BT_LOG_ON_WARN BT_LOG_ON(BT_LOG_WARN)
+#define BT_LOG_ON_WARNING BT_LOG_ON(BT_LOG_WARNING)
#define BT_LOG_ON_ERROR BT_LOG_ON(BT_LOG_ERROR)
#define BT_LOG_ON_FATAL BT_LOG_ON(BT_LOG_FATAL)
BT_LOG_WRITE_MEM(log, BT_LOG_TRACE, _BT_LOG_TAG, d, d_sz, __VA_ARGS__)
#else
#define BT_LOGT(...) _BT_LOG_UNUSED(__VA_ARGS__)
+ #define BT_LOGT_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGT_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGT_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGT_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
BT_LOG_WRITE_MEM_AUX(log, BT_LOG_DEBUG, _BT_LOG_TAG, d, d_sz, __VA_ARGS__)
#else
#define BT_LOGD(...) _BT_LOG_UNUSED(__VA_ARGS__)
+ #define BT_LOGD_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGD_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGD_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGD_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
BT_LOG_WRITE_MEM_AUX(log, BT_LOG_INFO, _BT_LOG_TAG, d, d_sz, __VA_ARGS__)
#else
#define BT_LOGI(...) _BT_LOG_UNUSED(__VA_ARGS__)
+ #define BT_LOGI_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGI_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGI_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGI_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
#endif
-#if BT_LOG_ENABLED_WARN
+#if BT_LOG_ENABLED_WARNING
#define BT_LOGW(...) \
- BT_LOG_WRITE(BT_LOG_WARN, _BT_LOG_TAG, __VA_ARGS__)
+ BT_LOG_WRITE(BT_LOG_WARNING, _BT_LOG_TAG, __VA_ARGS__)
#define BT_LOGW_ERRNO(...) \
- BT_LOG_WRITE_ERRNO(BT_LOG_WARN, _BT_LOG_TAG, __VA_ARGS__)
+ BT_LOG_WRITE_ERRNO(BT_LOG_WARNING, _BT_LOG_TAG, __VA_ARGS__)
#define BT_LOGW_AUX(log, ...) \
- BT_LOG_WRITE_AUX(log, BT_LOG_WARN, _BT_LOG_TAG, __VA_ARGS__)
+ BT_LOG_WRITE_AUX(log, BT_LOG_WARNING, _BT_LOG_TAG, __VA_ARGS__)
#define BT_LOGW_MEM(d, d_sz, ...) \
- BT_LOG_WRITE_MEM(BT_LOG_WARN, _BT_LOG_TAG, d, d_sz, __VA_ARGS__)
+ BT_LOG_WRITE_MEM(BT_LOG_WARNING, _BT_LOG_TAG, d, d_sz, __VA_ARGS__)
#define BT_LOGW_MEM_AUX(log, d, d_sz, ...) \
- BT_LOG_WRITE_MEM_AUX(log, BT_LOG_WARN, _BT_LOG_TAG, d, d_sz, __VA_ARGS__)
+ BT_LOG_WRITE_MEM_AUX(log, BT_LOG_WARNING, _BT_LOG_TAG, d, d_sz, __VA_ARGS__)
#else
#define BT_LOGW(...) _BT_LOG_UNUSED(__VA_ARGS__)
+ #define BT_LOGW_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGW_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGW_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGW_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
BT_LOG_WRITE_MEM_AUX(log, BT_LOG_ERROR, _BT_LOG_TAG, d, d_sz, __VA_ARGS__)
#else
#define BT_LOGE(...) _BT_LOG_UNUSED(__VA_ARGS__)
+ #define BT_LOGE_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGE_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGE_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGE_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
BT_LOG_WRITE_MEM_AUX(log, BT_LOG_FATAL, _BT_LOG_TAG, d, d_sz, __VA_ARGS__)
#else
#define BT_LOGF(...) _BT_LOG_UNUSED(__VA_ARGS__)
+ #define BT_LOGF_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGF_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGF_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__)
#define BT_LOGF_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__)
case BT_LOG_INFO:
letter = 'I';
break;
- case BT_LOG_WARN:
+ case BT_LOG_WARNING:
letter = 'W';
break;
case BT_LOG_ERROR:
} else if (strcmp(str, "WARN") == 0 ||
strcmp(str, "WARNING") == 0 ||
strcmp(str, "W") == 0) {
- level = BT_LOG_WARN;
+ level = BT_LOG_WARNING;
} else if (strcmp(str, "ERROR") == 0 ||
strcmp(str, "E") == 0) {
level = BT_LOG_ERROR;