TuyaOS
tal_log.h
浏览该文件的文档.
1
11#ifndef __TAL_LOG_H__
12#define __TAL_LOG_H__
13
14#include "tuya_cloud_types.h"
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20/***********************************************************************
21 ********************* constant ( macro and enum ) *********************
22 **********************************************************************/
26typedef enum {
27 TAL_LOG_LEVEL_ERR,
28 TAL_LOG_LEVEL_WARN,
29 TAL_LOG_LEVEL_NOTICE,
30 TAL_LOG_LEVEL_INFO,
31 TAL_LOG_LEVEL_DEBUG,
32 TAL_LOG_LEVEL_TRACE,
34
36
37#if defined(MAX_SIZE_OF_DEBUG_BUF)
38#define DEF_LOG_BUF_LEN MAX_SIZE_OF_DEBUG_BUF
39#else
40#define DEF_LOG_BUF_LEN 1024
41#endif
42
43#ifdef ENABLE_PRINTF_CHECK
44#define TAL_PRINTF_CHECK(formatArg, firstVarArg) __attribute__((format(printf, formatArg, firstVarArg)))
45#else
46#define TAL_PRINTF_CHECK(...)
47#endif
48
49TAL_PRINTF_CHECK(5, 6)
50OPERATE_RET tal_log_module_print(CHAR_T *name,
51 CONST TAL_LOG_LEVEL_E level,
52 CONST CHAR_T *file,
53 CONST INT32_T line,
54 CHAR_T *fmt,
55 ...);
56TAL_PRINTF_CHECK(4, 5)
57OPERATE_RET tal_log_print(CONST TAL_LOG_LEVEL_E level,
58 CONST CHAR_T *file,
59 CONST INT32_T line,
60 CHAR_T *fmt,
61 ...);
62
63// file name maybe define from complie parameter
64#ifndef _THIS_FILE_NAME_
65#define _THIS_FILE_NAME_ __FILE__
66#endif
67
68#if defined(ENABLE_LOG) && (ENABLE_LOG == 1)
69
70#define TAL_PR_ERR(fmt, ...) tal_log_print(TAL_LOG_LEVEL_ERR, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
71#define TAL_PR_WARN(fmt, ...) tal_log_print(TAL_LOG_LEVEL_WARN, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
72#define TAL_PR_NOTICE(fmt, ...) tal_log_print(TAL_LOG_LEVEL_NOTICE, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
73#define TAL_PR_INFO(fmt, ...) tal_log_print(TAL_LOG_LEVEL_INFO, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
74#define TAL_PR_DEBUG(fmt, ...) tal_log_print(TAL_LOG_LEVEL_DEBUG, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
75#define TAL_PR_TRACE(fmt, ...) tal_log_print(TAL_LOG_LEVEL_TRACE, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
76
77#define TAL_PR_HEXDUMP_ERR(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_ERR, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
78#define TAL_PR_HEXDUMP_WARN(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_WARN, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
79#define TAL_PR_HEXDUMP_NOTICE(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_NOTICE, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
80#define TAL_PR_HEXDUMP_INFO(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_INFO, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
81#define TAL_PR_HEXDUMP_DEBUG(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_DEBUG, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
82#define TAL_PR_HEXDUMP_TRACE(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_TRACE, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
83
84#else
85
86#define TAL_PR_ERR(fmt, ...)
87#define TAL_PR_WARN(fmt, ...)
88#define TAL_PR_NOTICE(fmt, ...)
89#define TAL_PR_INFO(fmt, ...)
90#define TAL_PR_DEBUG(fmt, ...)
91#define TAL_PR_TRACE(fmt, ...)
92
93#define TAL_PR_HEXDUMP_ERR(title, buf, size)
94#define TAL_PR_HEXDUMP_WARN(title, buf, size)
95#define TAL_PR_HEXDUMP_NOTICE(title, buf, size)
96#define TAL_PR_HEXDUMP_INFO(title, buf, size)
97#define TAL_PR_HEXDUMP_DEBUG(title, buf, size)
98#define TAL_PR_HEXDUMP_TRACE(title, buf, size)
99
100#endif
101
102#define TAL_PR_DEBUG_RAW(fmt, ...) tal_log_print_raw(fmt, ##__VA_ARGS__)
103#define TAL_PR_TRACE_ENTER() TAL_PR_TRACE("enter [%s]", (const char*)__func__)
104#define TAL_PR_TRACE_LEAVE() TAL_PR_TRACE(("leave [%s]", (const char*)__func__))
105
106// log output interface with module name
107#define TAL_MPR_ERR(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_ERR, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
108#define TAL_MPR_WARN(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_WARN, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
109#define TAL_MPR_NOTICE(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_NOTICE, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
110#define TAL_MPR_INFO(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_INFO, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
111#define TAL_MPR_DEBUG(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_DEBUG, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
112#define TAL_MPR_TRACE(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_TRACE, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
113
114/***********************************************************************
115 ********************* struct ******************************************
116 **********************************************************************/
117// prototype of log output function
118typedef VOID (*TAL_LOG_OUTPUT_CB)(IN CONST CHAR_T *str);
119
120/***********************************************************************
121 ********************* variable ****************************************
122 **********************************************************************/
123
124
125/***********************************************************************
126 ********************* function ****************************************
127 **********************************************************************/
128
140OPERATE_RET tal_log_create_manage_and_init(CONST TAL_LOG_LEVEL_E level, CONST INT32_T buf_len, CONST TAL_LOG_OUTPUT_CB output);
141
152OPERATE_RET tal_log_add_output_term(CONST CHAR_T *name, CONST TAL_LOG_OUTPUT_CB term);
153
163VOID tal_log_del_output_term(CONST CHAR_T *name);
164
175
185OPERATE_RET tal_log_set_manage_ms_info(BOOL_T if_ms_level);
186
197
208OPERATE_RET tal_log_add_module_level(CONST PCHAR_T module_name, CONST TAL_LOG_LEVEL_E level);
209
218OPERATE_RET tal_log_set_module_level(CONST PCHAR_T module_name, TAL_LOG_LEVEL_E level);
229OPERATE_RET tal_log_get_module_level(CONST PCHAR_T module_name, TAL_LOG_LEVEL_E *level);
230
240OPERATE_RET tal_log_delete_module_level(CONST PCHAR_T module_name);
241
242TAL_PRINTF_CHECK(1, 2)
243
244
252OPERATE_RET tal_log_print_raw(CONST PCHAR_T pFmt,...);
253
265
279 CONST CHAR_T *file,
280 CONST INT32_T line,
281 CONST CHAR_T *title,
282 UINT8_T width,
283 UINT8_T *buf,
284 UINT16_T size);
285
286
287#ifdef __cplusplus
288}
289#endif /* __TAL_LOG_H__ */
290
291#endif
OPERATE_RET tal_log_get_log_manage_attr(TAL_LOG_LEVEL_E *level)
get global log level.
VOID tal_log_release_manager(VOID)
destroy log management
OPERATE_RET tal_log_create_manage_and_init(CONST TAL_LOG_LEVEL_E level, CONST INT32_T buf_len, CONST TAL_LOG_OUTPUT_CB output)
initialize log management.
OPERATE_RET tal_log_add_module_level(CONST PCHAR_T module_name, CONST TAL_LOG_LEVEL_E level)
add one module's log level
OPERATE_RET tal_log_add_output_term(CONST CHAR_T *name, CONST TAL_LOG_OUTPUT_CB term)
add one output terminal.
OPERATE_RET tal_log_set_manage_attr(CONST TAL_LOG_LEVEL_E level)
set global log level.
OPERATE_RET tal_log_get_module_level(CONST PCHAR_T module_name, TAL_LOG_LEVEL_E *level)
get one module's log level
OPERATE_RET tal_log_print_raw(CONST PCHAR_T pFmt,...)
This API is used for print only user log info.
VOID tal_log_del_output_term(CONST CHAR_T *name)
delete one output terminal.
TAL_LOG_LEVEL_E
Definition of log level
Definition: tal_log.h:26
OPERATE_RET tal_log_set_manage_ms_info(BOOL_T if_ms_level)
set log time whether show in millisecond.
OPERATE_RET tal_log_set_module_level(CONST PCHAR_T module_name, TAL_LOG_LEVEL_E level)
This API is used for adding one module's log level.
VOID tal_log_hex_dump(CONST TAL_LOG_LEVEL_E level, CONST CHAR_T *file, CONST INT32_T line, CONST CHAR_T *title, UINT8_T width, UINT8_T *buf, UINT16_T size)
print a buffer in hex format
OPERATE_RET tal_log_delete_module_level(CONST PCHAR_T module_name)
delete one module's log level