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