1 /* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef DSOFTBUS_SOFTBUS_LOG_H 17 #define DSOFTBUS_SOFTBUS_LOG_H 18 19 #include <inttypes.h> 20 #include <stdint.h> 21 #include <stdio.h> 22 23 #if defined(SOFTBUS_LITEOS_M) 24 #include "hilog_lite/log.h" 25 #else 26 #include "hilog/log.h" 27 #endif 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #if defined(__ICCARM__) || defined(__LITEOS_M__) 34 #define SOFTBUS_DPRINTF(fd, fmt, ...) 35 #else 36 #define SOFTBUS_DPRINTF(fd, fmt, ...) dprintf(fd, fmt, ##__VA_ARGS__) 37 #endif 38 39 #define LOG_TAG_MAX_LEN 16 40 #define MODULE_DOMAIN_MAX_LEN 32 41 #define LOG_LINE_MAX_LENGTH 512 42 #define NSTACKX_LOG_DOMAIN 0xd0057ff 43 #define DOMAIN_ID_TEST 0xd000f00 44 45 #define FILE_NAME (__builtin_strrchr("/" __FILE_NAME__, '/') + 1) 46 #ifdef BUILD_VARIANT_ENG 47 #define FORMAT(fmt) "[%{public}s:%{public}d] %{public}s# " fmt 48 #else 49 #define FORMAT(fmt) "%{public}s# " fmt 50 #endif 51 52 /* For inner use only */ 53 #if defined(SOFTBUS_LITEOS_M) 54 #ifdef BUILD_VARIANT_ENG 55 #define SOFTBUS_LOGF_INNER(label, fmt, ...) \ 56 HILOG_FATAL(HILOG_MODULE_SOFTBUS, FORMAT(fmt), FILE_NAME, __LINE__, __FUNCTION__, ##__VA_ARGS__) 57 #define SOFTBUS_LOGE_INNER(label, fmt, ...) \ 58 HILOG_ERROR(HILOG_MODULE_SOFTBUS, FORMAT(fmt), FILE_NAME, __LINE__, __FUNCTION__, ##__VA_ARGS__) 59 #define SOFTBUS_LOGW_INNER(label, fmt, ...) \ 60 HILOG_WARN(HILOG_MODULE_SOFTBUS, FORMAT(fmt), FILE_NAME, __LINE__, __FUNCTION__, ##__VA_ARGS__) 61 #define SOFTBUS_LOGI_INNER(label, fmt, ...) \ 62 HILOG_INFO(HILOG_MODULE_SOFTBUS, FORMAT(fmt), FILE_NAME, __LINE__, __FUNCTION__, ##__VA_ARGS__) 63 #define SOFTBUS_LOGD_INNER(label, fmt, ...) \ 64 HILOG_DEBUG(HILOG_MODULE_SOFTBUS, FORMAT(fmt), FILE_NAME, __LINE__, __FUNCTION__, ##__VA_ARGS__) 65 #else 66 #define SOFTBUS_LOGF_INNER(label, fmt, ...) HILOG_FATAL(HILOG_MODULE_SOFTBUS, FORMAT(fmt), __FUNCTION__, ##__VA_ARGS__) 67 #define SOFTBUS_LOGE_INNER(label, fmt, ...) HILOG_ERROR(HILOG_MODULE_SOFTBUS, FORMAT(fmt), __FUNCTION__, ##__VA_ARGS__) 68 #define SOFTBUS_LOGW_INNER(label, fmt, ...) HILOG_WARN(HILOG_MODULE_SOFTBUS, FORMAT(fmt), __FUNCTION__, ##__VA_ARGS__) 69 #define SOFTBUS_LOGI_INNER(label, fmt, ...) HILOG_INFO(HILOG_MODULE_SOFTBUS, FORMAT(fmt), __FUNCTION__, ##__VA_ARGS__) 70 #define SOFTBUS_LOGD_INNER(label, fmt, ...) HILOG_DEBUG(HILOG_MODULE_SOFTBUS, FORMAT(fmt), __FUNCTION__, ##__VA_ARGS__) 71 #endif 72 #elif defined(SOFTBUS_LITEOS_A) 73 #ifdef BUILD_VARIANT_ENG 74 #define SOFTBUS_LOG_INNER(level, label, fmt, ...) \ 75 (void)HiLogPrint( \ 76 LOG_CORE, level, label.domain, label.tag, FORMAT(fmt), FILE_NAME, __LINE__, __FUNCTION__, ##__VA_ARGS__) 77 #else 78 #define SOFTBUS_LOG_INNER(level, label, fmt, ...) \ 79 (void)HiLogPrint(LOG_CORE, level, label.domain, label.tag, FORMAT(fmt), __FUNCTION__, ##__VA_ARGS__) 80 #endif 81 #else 82 #ifdef BUILD_VARIANT_ENG 83 #define SOFTBUS_LOG_INNER(level, label, fmt, ...) \ 84 (void)HILOG_IMPL( \ 85 LOG_CORE, level, label.domain, label.tag, FORMAT(fmt), FILE_NAME, __LINE__, __FUNCTION__, ##__VA_ARGS__) 86 #else 87 #define SOFTBUS_LOG_INNER(level, label, fmt, ...) \ 88 (void)HILOG_IMPL( \ 89 LOG_CORE, level, label.domain, label.tag, FORMAT(fmt), __FUNCTION__, ##__VA_ARGS__) 90 #endif 91 #endif 92 93 typedef struct { 94 int32_t label; 95 uint32_t domain; 96 char tag[LOG_TAG_MAX_LEN]; 97 } SoftBusLogLabel; 98 99 void NstackxLogInnerImpl(const char *moduleName, uint32_t logLevel, const char *fmt, ...); 100 101 #define CHECK_AND_RETURN_RET_LOG_INNER(cond, ret, log, label, fmt, ...) \ 102 do { \ 103 if (!(cond)) { \ 104 log(label, fmt, ##__VA_ARGS__); \ 105 return ret; \ 106 } \ 107 } while (0) 108 109 #define CHECK_AND_RETURN_LOG_INNER(cond, log, label, fmt, ...) \ 110 do { \ 111 if (!(cond)) { \ 112 log(label, fmt, ##__VA_ARGS__); \ 113 return; \ 114 } \ 115 } while (0) 116 117 #ifdef __cplusplus 118 } 119 #endif 120 #endif // DSOFTBUS_SOFTBUS_LOG_H 121