1  /*
2   * Copyright (c) 2024 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 OHOS_APPEXECFWK_HILOG_TAG_WRAPPER_H
17  #define OHOS_APPEXECFWK_HILOG_TAG_WRAPPER_H
18  
19  #include <map>
20  
21  #include "hilog/log.h"
22  
23  #ifndef BMS_TAG_DEFAULT
24  #define BMS_TAG_DEFAULT std::make_pair(0xD001120, "BMS")
25  #endif
26  
27  #ifndef BMS_TAG_INSTALLER
28  #define BMS_TAG_INSTALLER std::make_pair(0xD001120, "BMSInstaller")
29  #endif
30  
31  #ifndef BMS_TAG_QUERY
32  #define BMS_TAG_QUERY std::make_pair(0xD001121, "BMSQuery")
33  #endif
34  
35  #ifndef BMS_TAG_INSTALLD
36  #define BMS_TAG_INSTALLD std::make_pair(0xD001122, "BMSInstalld")
37  #endif
38  
39  #ifndef BMS_TAG_COMMON
40  #define BMS_TAG_COMMON std::make_pair(0xD001123, "BMSCommon")
41  #endif
42  
43  #ifndef APPEXECFWK_FUNC_FMT
44  #define APPEXECFWK_FUNC_FMT "%{public}s:%{public}s:%{public}d "
45  #endif
46  
47  #ifndef APPEXECFWK_FILE_NAME
48  #define APPEXECFWK_FILE_NAME (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__)
49  #endif
50  
51  #ifndef APPEXECFWK_FUNC_INFO
52  #define APPEXECFWK_FUNC_INFO APPEXECFWK_FILE_NAME, __FUNCTION__, __LINE__
53  #endif
54  
55  #define APPEXECFWK_PRINT_LOG(level, label, fmt, ...)                                    \
56          ((void)HILOG_IMPL(LOG_CORE, level, label.first,                                 \
57          label.second, APPEXECFWK_FUNC_FMT fmt, APPEXECFWK_FUNC_INFO, ##__VA_ARGS__))
58  
59  #define LOG_D(label, fmt, ...) APPEXECFWK_PRINT_LOG(LOG_DEBUG, label, fmt, ##__VA_ARGS__)
60  #define LOG_I(label, fmt, ...) APPEXECFWK_PRINT_LOG(LOG_INFO,  label, fmt, ##__VA_ARGS__)
61  #define LOG_W(label, fmt, ...) APPEXECFWK_PRINT_LOG(LOG_WARN,  label, fmt, ##__VA_ARGS__)
62  #define LOG_E(label, fmt, ...) APPEXECFWK_PRINT_LOG(LOG_ERROR, label, fmt, ##__VA_ARGS__)
63  #define LOG_F(label, fmt, ...) APPEXECFWK_PRINT_LOG(LOG_FATAL, label, fmt, ##__VA_ARGS__)
64  
65  #define APPEXECFWK_PRINT_LOG_NOFUNC(level, label, fmt, ...)                             \
66          ((void)HILOG_IMPL(LOG_CORE, level, label.first,                                 \
67          label.second, fmt, ##__VA_ARGS__))
68  
69  #define LOG_NOFUNC_D(label, fmt, ...) APPEXECFWK_PRINT_LOG_NOFUNC(LOG_DEBUG, label, fmt, ##__VA_ARGS__)
70  #define LOG_NOFUNC_I(label, fmt, ...) APPEXECFWK_PRINT_LOG_NOFUNC(LOG_INFO,  label, fmt, ##__VA_ARGS__)
71  #define LOG_NOFUNC_W(label, fmt, ...) APPEXECFWK_PRINT_LOG_NOFUNC(LOG_WARN,  label, fmt, ##__VA_ARGS__)
72  #define LOG_NOFUNC_E(label, fmt, ...) APPEXECFWK_PRINT_LOG_NOFUNC(LOG_ERROR, label, fmt, ##__VA_ARGS__)
73  #define LOG_NOFUNC_F(label, fmt, ...) APPEXECFWK_PRINT_LOG_NOFUNC(LOG_FATAL, label, fmt, ##__VA_ARGS__)
74  
75  #endif  // OHOS_APPEXECFWK_HILOG_TAG_WRAPPER_H
76