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 OHOS_CLOUD_OAID_HILOG_WRAPPER_H
17#define OHOS_CLOUD_OAID_HILOG_WRAPPER_H
18
19#include "hilog/log.h"
20
21namespace OHOS {
22namespace Cloud {
23// param of log interface, such as OAID_HILOGF.
24enum OAIDSubModule {
25    OAID_MODULE_INNERKIT = 0,
26    OAID_MODULE_CLIENT,
27    OAID_MODULE_SERVICE,
28    OAID_MODULE_JAVAKIT,  // java kit, defined to avoid repeated use of domain.
29    OAID_MODULE_JNI,
30    OAID_MODULE_COMMON,
31    OAID_MODULE_JS_NAPI,
32    OAID_MODULE_TEST,
33    OAID_MODULE_BUTT,
34};
35
36static constexpr unsigned int OAID_DOMAIN_ID = 0xD004701;
37
38static constexpr OHOS::HiviewDFX::HiLogLabel OAID_MODULE_LABEL[OAID_MODULE_BUTT] = {
39    { LOG_CORE, OAID_DOMAIN_ID, "OAIDInnerKit" },
40    { LOG_CORE, OAID_DOMAIN_ID, "OAIDClient" },
41    { LOG_CORE, OAID_DOMAIN_ID, "OAIDService" },
42    { LOG_CORE, OAID_DOMAIN_ID, "OAIDJavaKit" },
43    { LOG_CORE, OAID_DOMAIN_ID, "OAIDJni" },
44    { LOG_CORE, OAID_DOMAIN_ID, "OAIDCommon" },
45    { LOG_CORE, OAID_DOMAIN_ID, "OAIDJSNAPI" },
46    { LOG_CORE, OAID_DOMAIN_ID, "OAIDTest" },
47};
48
49#define R_FILENAME (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__)
50#define R_FORMATED(fmt, ...) "[%{public}s] %{public}s# " fmt, R_FILENAME, __FUNCTION__, ##__VA_ARGS__
51
52// In order to improve performance, do not check the module range.
53// Besides, make sure module is less than OAID_MODULE_BUTT.
54#define OAID_HILOGF(module, ...) \
55    (void)OHOS::HiviewDFX::HiLog::Fatal(OHOS::Cloud::OAID_MODULE_LABEL[module], R_FORMATED(__VA_ARGS__))
56#define OAID_HILOGE(module, ...) \
57    (void)OHOS::HiviewDFX::HiLog::Error(OHOS::Cloud::OAID_MODULE_LABEL[module], R_FORMATED(__VA_ARGS__))
58#define OAID_HILOGW(module, ...) \
59    (void)OHOS::HiviewDFX::HiLog::Warn(OHOS::Cloud::OAID_MODULE_LABEL[module], R_FORMATED(__VA_ARGS__))
60#define OAID_HILOGI(module, ...) \
61    (void)OHOS::HiviewDFX::HiLog::Info(OHOS::Cloud::OAID_MODULE_LABEL[module], R_FORMATED(__VA_ARGS__))
62#define OAID_HILOGD(module, ...) \
63    (void)OHOS::HiviewDFX::HiLog::Debug(OHOS::Cloud::OAID_MODULE_LABEL[module], R_FORMATED(__VA_ARGS__))
64}  // namespace Cloud
65}  // namespace OHOS
66#endif  // OHOS_CLOUD_OAID_HILOG_WRAPPER_H
67