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