ulog.h 2.7 KB
Newer Older
1
/*
2
 * Copyright (c) 2006-2021, RT-Thread Development Team
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2018-08-25     armink       the first version
 */

#ifndef _ULOG_H_
#define _ULOG_H_

#include <rtthread.h>
#include "ulog_def.h"

#ifdef __cplusplus
extern "C" {
#endif

21
#define ULOG_VERSION_STR               "0.1.1"
22 23 24 25 26

/*
 * ulog init and deint
 */
int ulog_init(void);
27
int ulog_async_init(void);
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
void ulog_deinit(void);

/*
 * output different level log by LOG_X API
 *
 * NOTE: The `LOG_TAG` and `LOG_LVL` must be defined before including the <ulog.h> when you want to use LOG_X API.
 *
 * #define LOG_TAG              "example"
 * #define LOG_LVL              LOG_LVL_DBG
 * #include <ulog.h>
 *
 * Then you can using LOG_X API to output log
 *
 * LOG_D("this is a debug log!");
 * LOG_E("this is a error log!");
 */
#define LOG_E(...)                     ulog_e(LOG_TAG, __VA_ARGS__)
#define LOG_W(...)                     ulog_w(LOG_TAG, __VA_ARGS__)
#define LOG_I(...)                     ulog_i(LOG_TAG, __VA_ARGS__)
#define LOG_D(...)                     ulog_d(LOG_TAG, __VA_ARGS__)
#define LOG_RAW(...)                   ulog_raw(__VA_ARGS__)
H
HubretXie 已提交
49
#define LOG_HEX(name, width, buf, size)      ulog_hex(name, width, buf, size)
50 51 52 53 54 55 56 57 58 59 60 61 62

/*
 * backend register and unregister
 */
rt_err_t ulog_backend_register(ulog_backend_t backend, const char *name, rt_bool_t support_color);
rt_err_t ulog_backend_unregister(ulog_backend_t backend);

#ifdef ULOG_USING_FILTER
/*
 * log filter setting
 */
int ulog_tag_lvl_filter_set(const char *tag, rt_uint32_t level);
rt_uint32_t ulog_tag_lvl_filter_get(const char *tag);
63
rt_slist_t *ulog_tag_lvl_list_get(void);
64
void ulog_global_filter_lvl_set(rt_uint32_t level);
65
rt_uint32_t ulog_global_filter_lvl_get(void);
66
void ulog_global_filter_tag_set(const char *tag);
67
const char *ulog_global_filter_tag_get(void);
68
void ulog_global_filter_kw_set(const char *keyword);
69
const char *ulog_global_filter_kw_get(void);
70 71 72 73 74 75 76 77 78 79 80 81
#endif /* ULOG_USING_FILTER */

/*
 * flush all backends's log
 */
void ulog_flush(void);

#ifdef ULOG_USING_ASYNC_OUTPUT
/*
 * asynchronous output API
 */
void ulog_async_output(void);
82
void ulog_async_output_enabled(rt_bool_t enabled);
83 84 85 86 87 88
void ulog_async_waiting_log(rt_int32_t time);
#endif

/*
 * dump the hex format data to log
 */
89
void ulog_hexdump(const char *tag, rt_size_t width, rt_uint8_t *buf, rt_size_t size);
90 91

/*
92
 * Another log output API. This API is more difficult to use than LOG_X API.
93
 */
94 95
void ulog_voutput(rt_uint32_t level, const char *tag, rt_bool_t newline, const char *format, va_list args);
void ulog_output(rt_uint32_t level, const char *tag, rt_bool_t newline, const char *format, ...);
96 97 98 99 100 101 102
void ulog_raw(const char *format, ...);

#ifdef __cplusplus
}
#endif

#endif /* _ULOG_H_ */