xref: /nrf52832-nimble/rt-thread/components/utilities/ulog/ulog.h (revision 104654410c56c573564690304ae786df310c91fc)
1 /*
2  * Copyright (c) 2006-2018, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2018-08-25     armink       the first version
9  */
10 
11 #ifndef _ULOG_H_
12 #define _ULOG_H_
13 
14 #include <rtthread.h>
15 #include "ulog_def.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 #define ULOG_VERSION_STR               "0.1.1"
22 
23 /*
24  * ulog init and deint
25  */
26 int ulog_init(void);
27 void ulog_deinit(void);
28 
29 /*
30  * output different level log by LOG_X API
31  *
32  * NOTE: The `LOG_TAG` and `LOG_LVL` must be defined before including the <ulog.h> when you want to use LOG_X API.
33  *
34  * #define LOG_TAG              "example"
35  * #define LOG_LVL              LOG_LVL_DBG
36  * #include <ulog.h>
37  *
38  * Then you can using LOG_X API to output log
39  *
40  * LOG_D("this is a debug log!");
41  * LOG_E("this is a error log!");
42  */
43 #define LOG_E(...)                     ulog_e(LOG_TAG, __VA_ARGS__)
44 #define LOG_W(...)                     ulog_w(LOG_TAG, __VA_ARGS__)
45 #define LOG_I(...)                     ulog_i(LOG_TAG, __VA_ARGS__)
46 #define LOG_D(...)                     ulog_d(LOG_TAG, __VA_ARGS__)
47 #define LOG_RAW(...)                   ulog_raw(__VA_ARGS__)
48 #define LOG_HEX(name, width, buf, size)      ulog_hex(name, width, buf, size)
49 
50 /*
51  * backend register and unregister
52  */
53 rt_err_t ulog_backend_register(ulog_backend_t backend, const char *name, rt_bool_t support_color);
54 rt_err_t ulog_backend_unregister(ulog_backend_t backend);
55 
56 #ifdef ULOG_USING_FILTER
57 /*
58  * log filter setting
59  */
60 int ulog_tag_lvl_filter_set(const char *tag, rt_uint32_t level);
61 rt_uint32_t ulog_tag_lvl_filter_get(const char *tag);
62 rt_slist_t *ulog_tag_lvl_list_get(void);
63 void ulog_global_filter_lvl_set(rt_uint32_t level);
64 rt_uint32_t ulog_global_filter_lvl_get(void);
65 void ulog_global_filter_tag_set(const char *tag);
66 const char *ulog_global_filter_tag_get(void);
67 void ulog_global_filter_kw_set(const char *keyword);
68 const char *ulog_global_filter_kw_get(void);
69 #endif /* ULOG_USING_FILTER */
70 
71 /*
72  * flush all backends's log
73  */
74 void ulog_flush(void);
75 
76 #ifdef ULOG_USING_ASYNC_OUTPUT
77 /*
78  * asynchronous output API
79  */
80 void ulog_async_output(void);
81 void ulog_async_waiting_log(rt_int32_t time);
82 #endif
83 
84 /*
85  * dump the hex format data to log
86  */
87 void ulog_hexdump(const char *tag, rt_size_t width, rt_uint8_t *buf, rt_size_t size);
88 
89 /*
90  * Another log output API. This API is more difficult to use than LOG_X API.
91  */
92 void ulog_voutput(rt_uint32_t level, const char *tag, rt_bool_t newline, const char *format, va_list args);
93 void ulog_output(rt_uint32_t level, const char *tag, rt_bool_t newline, const char *format, ...);
94 void ulog_raw(const char *format, ...);
95 
96 #ifdef __cplusplus
97 }
98 #endif
99 
100 #endif /* _ULOG_H_ */
101