1cc290419Sopenharmony_ci/*
2cc290419Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd.
3cc290419Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4cc290419Sopenharmony_ci * you may not use this file except in compliance with the License.
5cc290419Sopenharmony_ci * You may obtain a copy of the License at
6cc290419Sopenharmony_ci *
7cc290419Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8cc290419Sopenharmony_ci *
9cc290419Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10cc290419Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11cc290419Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12cc290419Sopenharmony_ci * See the License for the specific language governing permissions and
13cc290419Sopenharmony_ci * limitations under the License.
14cc290419Sopenharmony_ci */
15cc290419Sopenharmony_ci// ############################# enum define ###################################
16cc290419Sopenharmony_ci#ifndef HDC_LOG_H
17cc290419Sopenharmony_ci#define HDC_LOG_H
18cc290419Sopenharmony_ci
19cc290419Sopenharmony_ci#include <cinttypes>
20cc290419Sopenharmony_ci#include <cstdarg>
21cc290419Sopenharmony_ci#include <string>
22cc290419Sopenharmony_ci#include "base.h"
23cc290419Sopenharmony_ci
24cc290419Sopenharmony_cinamespace Hdc {
25cc290419Sopenharmony_ciusing namespace std;
26cc290419Sopenharmony_ci
27cc290419Sopenharmony_cienum LogLevel {
28cc290419Sopenharmony_ci    LOG_OFF,
29cc290419Sopenharmony_ci    LOG_FATAL,
30cc290419Sopenharmony_ci    LOG_WARN,
31cc290419Sopenharmony_ci    LOG_INFO,  // default
32cc290419Sopenharmony_ci    LOG_DEBUG,
33cc290419Sopenharmony_ci    LOG_ALL,
34cc290419Sopenharmony_ci    LOG_VERBOSE,
35cc290419Sopenharmony_ci    LOG_LAST = LOG_VERBOSE,  // tail, not use
36cc290419Sopenharmony_ci};
37cc290419Sopenharmony_ci
38cc290419Sopenharmony_ciinline string GetFileNameAny(const string &path)
39cc290419Sopenharmony_ci{
40cc290419Sopenharmony_ci    string tmpString = path;
41cc290419Sopenharmony_ci    size_t tmpNum = tmpString.rfind('/');
42cc290419Sopenharmony_ci    if (tmpNum == std::string::npos) {
43cc290419Sopenharmony_ci        tmpNum = tmpString.rfind('\\');
44cc290419Sopenharmony_ci        if (tmpNum == std::string::npos) {
45cc290419Sopenharmony_ci            return tmpString;
46cc290419Sopenharmony_ci        }
47cc290419Sopenharmony_ci    }
48cc290419Sopenharmony_ci    tmpString = tmpString.substr(tmpNum + 1, tmpString.size() - tmpNum);
49cc290419Sopenharmony_ci    return tmpString;
50cc290419Sopenharmony_ci}
51cc290419Sopenharmony_ci
52cc290419Sopenharmony_civoid PrintLogEx(const char *functionName, int line, uint8_t logLevel, const char *msg, ...);
53cc290419Sopenharmony_ci
54cc290419Sopenharmony_ci#define WRITE_LOG(level, fmt, ...)   PrintLogEx(__FILE__, __LINE__, level, fmt, ##__VA_ARGS__)
55cc290419Sopenharmony_ci}
56cc290419Sopenharmony_ci#endif
57