XFusion API v1.3.0
载入中...
搜索中...
未找到
main.c
浏览该文件的文档.
1#include <stdio.h>
2#include "xf_log.h"
3#include "xf_log_uitls.h"
4#include <time.h>
5
6#define TAG "main"
7
8uint32_t get_current_time_ms(void)
9{
10 struct timespec ts;
11 clock_gettime(CLOCK_MONOTONIC, &ts);
12 return ts.tv_sec * 1000ULL + ts.tv_nsec / 1000000ULL;
13}
14
15static void uart_write(const char *str, size_t len, void *arg)
16{
17 // 逐字节发送字符串到“串口”
18 for (size_t i = 0; i < len; ++i) {
19 // 假设这是发送到串口的部分,我们使用putchar模拟
20 putchar(str[i]);
21 }
22}
23
24static void file_write(const char *str, size_t len, void *arg)
25{
26 const char *file = (const char *)arg;
27 FILE *fp = fopen(file, "a+");
28 fwrite(str, 1, len, fp);
29 fclose(fp);
30}
31
32int main(void)
33{
34 const char *name = "skldfjaslkdfjaslkdfj;asldfja;sldfjasljdflksjdfl;kaj;dlfja;lskdjf;alskjdfaljlasdflj;";
35 int date = 20241014;
36 float pi = 3.141592;
37 int log_uart_id = 0;
38 int log_file_id = 0;
39
40 xf_log_set_time_func(get_current_time_ms); // 设置时间戳打印函数(可选)
41
42 log_uart_id = xf_log_register_obj(uart_write, NULL);
44
45 log_file_id = xf_log_register_obj(file_write, "./log.log");
46 xf_log_set_info_level(log_file_id, XF_LOG_LVL_VERBOSE); // 所有等级打印都带有全部信息
47 xf_log_set_filter_colorful_disable(log_file_id); // 不用彩色打印
48 xf_log_set_filter_file(log_file_id, __FILE__); // 过滤文件名为__FILE__的打印
49 xf_log_set_filter_enable(log_file_id); // 打开过滤器
50 xf_log_set_filter_is_blacklist(log_file_id); // 设置过滤器为黑名单
51
52 xf_log(XF_LOG_LVL_USER, TAG, __FILE__, __LINE__, __func__, "Hello, %.5s, date: %d, pi: %f!\n", name, date, pi);
53 xf_log(XF_LOG_LVL_ERROR, TAG, "file1.c", __LINE__, __func__, "Hello, %s, date: %d, pi: %f!\n", name, date, pi);
54 xf_log(XF_LOG_LVL_WARN, TAG, __FILE__, __LINE__, __func__, "Hello, %s, date: %d, pi: %f!\n", name, date, pi);
55 xf_log(XF_LOG_LVL_INFO, TAG, "file2.c", __LINE__, __func__, "Hello, %s, date: %d, pi: %f!\n", name, date, pi);
56 xf_log(XF_LOG_LVL_DEBUG, TAG, __FILE__, __LINE__, __func__, "Hello, %s, date: %d, pi: %f!\n", name, date, pi);
57 xf_log(XF_LOG_LVL_VERBOSE, TAG, "file3.c", __LINE__, __func__, "Hello, %s, date: %d, pi: %f!\n", name, date, pi);
58
59 xf_log_level(XF_LOG_LVL_USER, TAG, "Hello, %.5s, date: %d, pi: %f!", name, date, pi);
60 xf_log_level(XF_LOG_LVL_ERROR, TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
61 xf_log_level(XF_LOG_LVL_WARN, TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
62 xf_log_level(XF_LOG_LVL_INFO, TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
63 xf_log_level(XF_LOG_LVL_DEBUG, TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
64 xf_log_level(XF_LOG_LVL_VERBOSE, TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
65
66 XF_LOGU(TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
67 XF_LOGE(TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
68 XF_LOGW(TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
69 XF_LOGI(TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
70 XF_LOGD(TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
71 XF_LOGV(TAG, "Hello, %s, date: %d, pi: %f!", name, date, pi);
72
73 xf_log_printf("Hello, %s, date: %d, pi: %f!\n", name, date, pi);
74
75 return 0;
76}
void xf_log_set_filter_enable(int log_obj_id)
启用过滤器
Definition xf_log.c:146
void xf_log_set_time_func(xf_log_time_func_t log_time_func)
设置log的时间戳打印函数
Definition xf_log.c:198
size_t xf_log(uint8_t level, const char *tag, const char *file, uint32_t line, const char *func, const char *fmt,...)
log打印函数
Definition xf_log.c:203
void xf_log_set_filter_file(int log_obj_id, const char *file)
设置过滤器的文件过滤
Definition xf_log.c:186
#define XF_LOG_LVL_INFO
Definition xf_log.h:67
void xf_log_set_info_level(int log_obj_id, uint8_t level)
显示文件函数等信息的最小等级
Definition xf_log.c:193
#define xf_log_level(level, tag, fmt,...)
Definition xf_log.h:234
#define XF_LOG_LVL_DEBUG
Definition xf_log.h:68
#define XF_LOG_LVL_WARN
Definition xf_log.h:66
#define XF_LOG_LVL_USER
Definition xf_log.h:64
void xf_log_set_filter_colorful_disable(int log_obj_id)
关闭彩色显示
Definition xf_log.c:161
void xf_log_set_filter_is_blacklist(int log_obj_id)
设置过滤器为黑名单(其内容将被过滤)
Definition xf_log.c:166
#define XF_LOG_LVL_VERBOSE
Definition xf_log.h:69
#define XF_LOG_LVL_ERROR
Definition xf_log.h:65
int main(void)
Definition main.c:28
uint32_t get_current_time_ms(void)
Definition main.c:8
static void file_write(const char *str, size_t len, void *arg)
Definition main.c:24
static void uart_write(const char *str, size_t len, void *arg)
Definition main.c:15
#define TAG
Definition main.c:6
int xf_log_register_obj(xf_log_out_t out_func, void *user_args)
注册log后端是输出到哪里,其最大值受到 XF_LOG_OBJ_MAX 的限制
Definition xf_log.c:118
#define XF_LOGI(tag, format,...)
#define XF_LOGE(tag, format,...)
#define XF_LOGW(tag, format,...)
#define XF_LOGU(tag, format,...)
#define XF_LOGV(tag, format,...)
#define XF_LOGD(tag, format,...)
#define xf_log_printf(format,...)