diff --git a/deps/oblib/src/lib/oblog/ob_log.h b/deps/oblib/src/lib/oblog/ob_log.h index 1e1c2b2b6..b7ae1e475 100644 --- a/deps/oblib/src/lib/oblog/ob_log.h +++ b/deps/oblib/src/lib/oblog/ob_log.h @@ -56,161 +56,244 @@ class ObFIFOAllocator; class ObPLogItem; #define OB_LOGGER ::oceanbase::common::ObLogger::get_logger() -#define OB_LOG_NEED_TO_PRINT(level) OB_LOGGER.need_to_print(OB_LOG_LEVEL_##level) +#define OB_LOG_NEED_TO_PRINT(level) (OB_UNLIKELY(OB_LOGGER.need_to_print(OB_LOG_LEVEL_##level))) -#define OB_T_TO_STRING_BODY_1 \ - char* buf1 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key1, false, obj1); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_1 \ + char *buf1 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key1, false, obj1))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_2 \ - OB_T_TO_STRING_BODY_1 \ - char* buf2 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key2, false, obj2); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_2 \ + OB_T_TO_STRING_BODY_1 \ + char *buf2 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key2, false, obj2))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_3 \ - OB_T_TO_STRING_BODY_2 \ - char* buf3 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key3, false, obj3); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_3 \ + OB_T_TO_STRING_BODY_2 \ + char *buf3 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key3, false, obj3))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } +#define OB_T_TO_STRING_BODY_4 \ + OB_T_TO_STRING_BODY_3 \ + char *buf4 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key4, false, obj4))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_4 \ - OB_T_TO_STRING_BODY_3 \ - char* buf4 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key4, false, obj4); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_5 \ + OB_T_TO_STRING_BODY_4 \ + char *buf5 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key5, false, obj5))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_5 \ - OB_T_TO_STRING_BODY_4 \ - char* buf5 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key5, false, obj5); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_6 \ + OB_T_TO_STRING_BODY_5 \ + char *buf6 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key6, false, obj6))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_6 \ - OB_T_TO_STRING_BODY_5 \ - char* buf6 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key6, false, obj6); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_7 \ + OB_T_TO_STRING_BODY_6 \ + char *buf7 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key7, false, obj7))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_7 \ - OB_T_TO_STRING_BODY_6 \ - char* buf7 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key7, false, obj7); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_8 \ + OB_T_TO_STRING_BODY_7 \ + char *buf8 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key8, false, obj8))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_8 \ - OB_T_TO_STRING_BODY_7 \ - char* buf8 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key8, false, obj8); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_9 \ + OB_T_TO_STRING_BODY_8 \ + char *buf9 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key9, false, obj9))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_9 \ - OB_T_TO_STRING_BODY_8 \ - char* buf9 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key9, false, obj9); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_10 \ + OB_T_TO_STRING_BODY_9 \ + char *buf10 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key10, false, obj10))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_10 \ - OB_T_TO_STRING_BODY_9 \ - char* buf10 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key10, false, obj10); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_11 \ + OB_T_TO_STRING_BODY_10 \ + char *buf11 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key11, false, obj11))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_11 \ - OB_T_TO_STRING_BODY_10 \ - char* buf11 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key11, false, obj11); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_12 \ + OB_T_TO_STRING_BODY_11 \ + char *buf12 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key12, false, obj12))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_12 \ - OB_T_TO_STRING_BODY_11 \ - char* buf12 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key12, false, obj12); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_13 \ + OB_T_TO_STRING_BODY_12 \ + char *buf13 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key13, false, obj13))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_13 \ - OB_T_TO_STRING_BODY_12 \ - char* buf13 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key13, false, obj13); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_14 \ + OB_T_TO_STRING_BODY_13 \ + char *buf14 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key14, false, obj14))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_14 \ - OB_T_TO_STRING_BODY_13 \ - char* buf14 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key14, false, obj14); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_15 \ + OB_T_TO_STRING_BODY_14 \ + char *buf15 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key15, false, obj15))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_15 \ - OB_T_TO_STRING_BODY_14 \ - char* buf15 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key15, false, obj15); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_16 \ + OB_T_TO_STRING_BODY_15 \ + char *buf16 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key16, false, obj16))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_16 \ - OB_T_TO_STRING_BODY_15 \ - char* buf16 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key16, false, obj16); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_17 \ + OB_T_TO_STRING_BODY_16 \ + char *buf17 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key17, false, obj17))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_17 \ - OB_T_TO_STRING_BODY_16 \ - char* buf17 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key17, false, obj17); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_18 \ + OB_T_TO_STRING_BODY_17 \ + char *buf18 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key18, false, obj18))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_18 \ - OB_T_TO_STRING_BODY_17 \ - char* buf18 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key18, false, obj18); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_19 \ + OB_T_TO_STRING_BODY_18 \ + char *buf19 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key19, false, obj19))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_19 \ - OB_T_TO_STRING_BODY_18 \ - char* buf19 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key19, false, obj19); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_20 \ + OB_T_TO_STRING_BODY_19 \ + char *buf20 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key20, false, obj20))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_20 \ - OB_T_TO_STRING_BODY_19 \ - char* buf20 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key20, false, obj20); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_21 \ + OB_T_TO_STRING_BODY_20 \ + char *buf21 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key21, false, obj21))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_21 \ - OB_T_TO_STRING_BODY_20 \ - char* buf21 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key21, false, obj21); \ - buf[__pos++] = '\0'; +#define OB_T_TO_STRING_BODY_22 \ + OB_T_TO_STRING_BODY_21 \ + char *buf22 = buf + MAX(__pos, 0); \ + if (OB_FAIL(ret)) { \ + } else if (OB_FAIL(::oceanbase::common::logdata_print_key_obj(buf, buf_size - 1, __pos, key22, false, obj22))) { \ + } else if (__pos + 1 >= buf_size) { \ + } else { \ + buf[__pos++] = '\0'; \ + } -#define OB_T_TO_STRING_BODY_22 \ - OB_T_TO_STRING_BODY_21 \ - char* buf22 = buf + MAX(__pos, 0); \ - ret = ::oceanbase::common::logdata_print_key_obj(buf, buf_size, __pos, key22, false, obj22); \ - buf[__pos++] = '\0'; - -#define DEFINE_OB_PRINT_KV(n) \ - template \ - void OB_PRINT(const char* mod_name, \ - const int32_t level, \ - const char* file, \ - const int32_t line, \ - const char* function, \ - const uint64_t location_hash_val, \ - const char* info_string, \ - LOG_PARAMETER_KV##n) \ - { \ - int64_t __pos = 0; \ - int ret = OB_SUCCESS; \ - if (OB_LIKELY(!OB_LOGGER.get_guard())) { \ - OB_LOGGER.get_guard() = true; \ - char* buf = ::oceanbase::common::ObLogger::get_small_buffer(); \ - const int64_t buf_size = ::oceanbase::common::ObLogger::OB_SMALL_LOG_BUFFER_SIZE - 1; \ - OB_T_TO_STRING_BODY_##n OB_LOGGER.log_message_kv( \ - mod_name, level, file, line, function, location_hash_val, info_string, EXPAND_ARGUMENT_##n(buf)); \ - OB_LOGGER.get_guard() = false; \ - UNUSED(ret); \ - } \ +#define DEFINE_OB_PRINT_KV(n) \ + template \ + void OB_PRINT(const char *mod_name, const int32_t level, const char *file, const int32_t line, \ + const char *function, const uint64_t location_hash_val, const char *info_string, \ + LOG_PARAMETER_KV##n) \ + { \ + int64_t __pos = 0; \ + int ret = OB_SUCCESS; \ + if (OB_LIKELY(!OB_LOGGER.get_guard())) { \ + OB_LOGGER.get_guard() = true; \ + char *buf = ::oceanbase::common::ObLogger::get_small_buffer(); \ + const int64_t buf_size = ::oceanbase::common::ObLogger::OB_SMALL_LOG_BUFFER_SIZE; \ + OB_T_TO_STRING_BODY_##n \ + OB_LOGGER.log_message_kv(mod_name, level, file, line, function, location_hash_val, \ + info_string, EXPAND_ARGUMENT_##n(buf)); \ + OB_LOGGER.get_guard() = false; \ + UNUSED(ret); \ + } \ } //@class ObLogIdLevelMap