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#include "hilog/log.h"
17#include "interface/native/log.h"
18
19static OHOS::Ace::LogLevel ConvertLogLevel(LogLevel level)
20{
21    switch (level) {
22        case LogLevel::LOG_DEBUG:
23            return OHOS::Ace::LogLevel::DEBUG;
24        case LogLevel::LOG_INFO:
25            return OHOS::Ace::LogLevel::INFO;
26        case LogLevel::LOG_WARN:
27            return OHOS::Ace::LogLevel::WARN;
28        case LogLevel::LOG_ERROR:
29            return OHOS::Ace::LogLevel::ERROR;
30        case LogLevel::LOG_FATAL:
31            return OHOS::Ace::LogLevel::FATAL;
32        default:
33            return OHOS::Ace::LogLevel::DEBUG;
34    }
35}
36
37int HiLogPrintArgs(const LogType type, const LogLevel level, const unsigned int domain, const char *tag,
38    const char *fmt, va_list ap)
39{
40    OHOS::HiviewDFX::Hilog::Platform::LogPrint(ConvertLogLevel(level), fmt, ap);
41    return 0;
42}
43
44int HiLogPrint(LogType type, LogLevel level, unsigned int domain, const char *tag, const char *fmt, ...)
45{
46    int ret;
47    va_list ap;
48    va_start(ap, fmt);
49    ret = HiLogPrintArgs(type, level, domain, tag, fmt, ap);
50    va_end(ap);
51    return ret;
52}
53
54bool HiLogIsLoggable(unsigned int domain, const char *tag, LogLevel level)
55{
56    if ((level <= LOG_LEVEL_MIN) || (level >= LOG_LEVEL_MAX) || tag == nullptr) {
57        return false;
58    }
59
60    return true;
61}
62