1/*
2 * Copyright (c) 2020 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 HIVIEWDFX_HILOG_CPP_H
17#define HIVIEWDFX_HILOG_CPP_H
18
19#include "hiview_log.h"
20
21#ifdef __cplusplus
22
23namespace OHOS {
24namespace HiviewDFX {
25struct HiLogLabel {
26    LogType type;
27    unsigned int domain;
28    const char *tag;
29};
30
31class HiLog final {
32public:
33    /**
34    * @brief Outputs debug logs.
35    *
36    * @param label Indicates the log label.
37    * @param fmt Indicates the format string, which is an enhancement of a printf format string and supports the
38    * privacy identifier. Specifically, {public} or {private} is added between the % character and the format specifier
39    * in each parameter. \n
40    * @param... Indicates a list of parameters. The number and type of parameters must map onto the format specifiers
41    * in the format string.
42    * @return Returns <b>0</b> or a larger value if the operation is successful; returns a value smaller than <b>0</b>
43    * otherwise.
44    * @since 1.1
45    * @version 1.0
46    */
47    static int Debug(const HiLogLabel &label, const char *fmt, ...) __attribute__((__format__(printf, 2, 3)));
48    /**
49    * @brief Outputs informational logs.
50    *
51    * @param label Indicates the log label.
52    * @param fmt Indicates the format string, which is an enhancement of a printf format string and supports the
53    * privacy identifier. Specifically, {public} or {private} is added between the % character and the format specifier
54    * in each parameter. \n
55    * @param... Indicates a list of parameters. The number and type of parameters must map onto the format specifiers
56    * in the format string.
57    * @return Returns <b>0</b> or a larger value if the operation is successful; returns a value smaller than <b>0</b>
58    * otherwise.
59    * @since 1.1
60    * @version 1.0
61    */
62    static int Info(const HiLogLabel &label, const char *fmt, ...) __attribute__((__format__(printf, 2, 3)));
63    /**
64    * @brief Outputs warning logs.
65    *
66    * @param label Indicates the log label.
67    * @param fmt Indicates the format string, which is an enhancement of a printf format string and supports the
68    * privacy identifier. Specifically, {public} or {private} is added between the % character and the format specifier
69    * in each parameter. \n
70    * @param... Indicates a list of parameters. The number and type of parameters must map onto the format specifiers
71    * in the format string.
72    * @return Returns <b>0</b> or a larger value if the operation is successful; returns a value smaller than <b>0</b>
73    * otherwise.
74    * @since 1.1
75    * @version 1.0
76    */
77    static int Warn(const HiLogLabel &label, const char *fmt, ...) __attribute__((__format__(printf, 2, 3)));
78    /**
79    * @brief Outputs error logs.
80    *
81    * @param label Indicates the log label.
82    * @param fmt Indicates the format string, which is an enhancement of a printf format string and supports the
83    * privacy identifier. Specifically, {public} or {private} is added between the % character and the format specifier
84    * in each parameter. \n
85    * @param... Indicates a list of parameters. The number and type of parameters must map onto the format specifiers
86    * in the format string.
87    * @return Returns <b>0</b> or a larger value if the operation is successful; returns a value smaller than <b>0</b>
88    * otherwise.
89    * @since 1.1
90    * @version 1.0
91    */
92    static int Error(const HiLogLabel &label, const char *fmt, ...) __attribute__((__format__(printf, 2, 3)));
93    /**
94    * @brief Outputs fatal logs.
95    *
96    * @param label Indicates the log label.
97    * @param fmt Indicates the format string, which is an enhancement of a printf format string and supports the
98    * privacy identifier. Specifically, {public} or {private} is added between the % character and the format specifier
99    * in each parameter. \n
100    * @param... Indicates a list of parameters. The number and type of parameters must map onto the format specifiers
101    * in the format string.
102    * @return Returns <b>0</b> or a larger value if the operation is successful; returns a value smaller than <b>0</b>
103    * otherwise.
104    * @since 1.1
105    * @version 1.0
106    */
107    static int Fatal(const HiLogLabel &label, const char *fmt, ...) __attribute__((__format__(printf, 2, 3)));
108};
109} // namespace HiviewDFX
110} // namespace OHOS
111#endif // __cplusplus
112
113#endif // HIVIEWDFX_HILOG_CPP_H
114