TuyaOS
tal_log.h
1
10#ifndef _TAL_LOG_H_
11#define _TAL_LOG_H_
12
13#include "tuya_cloud_types.h"
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
22typedef enum {
23 TAL_LOG_LEVEL_ERR,
24 TAL_LOG_LEVEL_WARN,
25 TAL_LOG_LEVEL_NOTICE,
26 TAL_LOG_LEVEL_INFO,
27 TAL_LOG_LEVEL_DEBUG,
28 TAL_LOG_LEVEL_TRACE,
29} TAL_LOG_LEVEL_E;
30
31typedef TAL_LOG_LEVEL_E LOG_LEVEL;
32
33#if defined(MAX_SIZE_OF_DEBUG_BUF)
34#define DEF_LOG_BUF_LEN MAX_SIZE_OF_DEBUG_BUF
35#else
36#define DEF_LOG_BUF_LEN 1024
37#endif
38
39#ifdef ENABLE_PRINTF_CHECK
40#define TAL_PRINTF_CHECK(formatArg, firstVarArg) __attribute__((format(printf, formatArg, firstVarArg)))
41#else
42#define TAL_PRINTF_CHECK(...)
43#endif
44
45TAL_PRINTF_CHECK(5, 6)
46OPERATE_RET tal_log_module_print(CHAR_T *name,
47 CONST TAL_LOG_LEVEL_E level,
48 CONST CHAR_T *file,
49 CONST INT_T line,
50 CHAR_T *fmt,
51 ...);
52TAL_PRINTF_CHECK(4, 5)
53OPERATE_RET tal_log_print(CONST TAL_LOG_LEVEL_E level,
54 CONST CHAR_T *file,
55 CONST INT_T line,
56 CHAR_T *fmt,
57 ...);
58
59// file name maybe define from complie parameter
60#ifndef _THIS_FILE_NAME_
61#define _THIS_FILE_NAME_ __FILE__
62#endif
63
64#if defined(ENABLE_LOG) && (ENABLE_LOG==1)
65
66#define TAL_PR_ERR(fmt, ...) tal_log_print(TAL_LOG_LEVEL_ERR, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
67#define TAL_PR_WARN(fmt, ...) tal_log_print(TAL_LOG_LEVEL_WARN, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
68#define TAL_PR_NOTICE(fmt, ...) tal_log_print(TAL_LOG_LEVEL_NOTICE, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
69#define TAL_PR_INFO(fmt, ...) tal_log_print(TAL_LOG_LEVEL_INFO, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
70#define TAL_PR_DEBUG(fmt, ...) tal_log_print(TAL_LOG_LEVEL_DEBUG, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
71#define TAL_PR_TRACE(fmt, ...) tal_log_print(TAL_LOG_LEVEL_TRACE, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
72
73#define TAL_PR_HEXDUMP_ERR(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_ERR, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
74#define TAL_PR_HEXDUMP_WARN(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_WARN, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
75#define TAL_PR_HEXDUMP_NOTICE(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_NOTICE, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
76#define TAL_PR_HEXDUMP_INFO(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_INFO, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
77#define TAL_PR_HEXDUMP_DEBUG(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_DEBUG, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
78#define TAL_PR_HEXDUMP_TRACE(title, buf, size) tal_log_hex_dump(TAL_LOG_LEVEL_TRACE, _THIS_FILE_NAME_, __LINE__, title, 64, buf, size)
79
80#else
81
82#define TAL_PR_ERR(fmt, ...)
83#define TAL_PR_WARN(fmt, ...)
84#define TAL_PR_NOTICE(fmt, ...)
85#define TAL_PR_INFO(fmt, ...)
86#define TAL_PR_DEBUG(fmt, ...)
87#define TAL_PR_TRACE(fmt, ...)
88
89#define TAL_PR_HEXDUMP_ERR(title, buf, size)
90#define TAL_PR_HEXDUMP_WARN(title, buf, size)
91#define TAL_PR_HEXDUMP_NOTICE(title, buf, size)
92#define TAL_PR_HEXDUMP_INFO(title, buf, size)
93#define TAL_PR_HEXDUMP_DEBUG(title, buf, size)
94#define TAL_PR_HEXDUMP_TRACE(title, buf, size)
95
96
97#endif
98
99#define TAL_PR_DEBUG_RAW(fmt, ...) tal_log_print_raw(fmt, ##__VA_ARGS__)
100#define TAL_PR_TRACE_ENTER() TAL_PR_TRACE("enter [%s]", (const char*)__func__)
101#define TAL_PR_TRACE_LEAVE() TAL_PR_TRACE(("leave [%s]", (const char*)__func__))
102
103// log output interface with module name
104#define TAL_MPR_ERR(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_ERR, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
105#define TAL_MPR_WARN(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_WARN, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
106#define TAL_MPR_NOTICE(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_NOTICE, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
107#define TAL_MPR_INFO(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_INFO, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
108#define TAL_MPR_DEBUG(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_DEBUG, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
109#define TAL_MPR_TRACE(module,fmt, ...) tal_log_module_print(module, TAL_LOG_LEVEL_TRACE, _THIS_FILE_NAME_, __LINE__, fmt, ##__VA_ARGS__)
110
111
112// prototype of log output function
113typedef VOID (*TAL_LOG_OUTPUT_CB)(IN CONST CHAR_T *str);
114
126OPERATE_RET tal_log_create_manage_and_init(CONST TAL_LOG_LEVEL_E level, CONST INT_T buf_len, CONST TAL_LOG_OUTPUT_CB output);
127
138OPERATE_RET tal_log_add_output_term(CONST CHAR_T *name, CONST TAL_LOG_OUTPUT_CB term);
139
149VOID tal_log_del_output_term(CONST CHAR_T *name);
150
160OPERATE_RET tal_log_set_manage_attr(CONST TAL_LOG_LEVEL_E level);
161
171OPERATE_RET tal_log_set_manage_ms_info(BOOL_T if_ms_level);
172
182OPERATE_RET tal_log_get_log_manage_attr(TAL_LOG_LEVEL_E *level);
193OPERATE_RET tal_log_add_module_level(CONST PCHAR_T module_name, CONST TAL_LOG_LEVEL_E level);
194
205OPERATE_RET tal_log_set_module_level(CONST PCHAR_T module_name, TAL_LOG_LEVEL_E level);
216OPERATE_RET tal_log_get_module_level(CONST PCHAR_T module_name, TAL_LOG_LEVEL_E *level);
217
227OPERATE_RET tal_log_delete_module_level(CONST PCHAR_T module_name);
228
239TAL_PRINTF_CHECK(1, 2)
240OPERATE_RET tal_log_print_raw(CONST PCHAR_T pFmt,...);
241
252VOID tal_log_release_manager(VOID);
253
254
267VOID tal_log_hex_dump(CONST TAL_LOG_LEVEL_E level,
268 CONST CHAR_T *file,
269 CONST INT_T line,
270 CONST CHAR_T *title,
271 UINT8_T width,
272 UINT8_T *buf,
273 UINT16_T size);
274
275
276#ifdef __cplusplus
277}
278#endif /* __cplusplus */
279
280#endif
281
282