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