STM32移植Easylogger输出

简介

EasyLogger 是一款超轻量级 、高性能的 C 日志库,非常适合对资源敏感的软件项目,例如:IoT 产品、可穿戴设备、智能家居等等。相比 log4c、zlog 这些知名的 C 日志库,EasyLogger 的功能更加简单,提供给用户的接口更少,但上手会很快,更多实用功能支持以插件形式进行动态扩展。

1.1 主要特性

  • 支持用户自定义输出方式(例如:终端、文件、数据库、串口、485、Flash…);
  • 日志内容可包含级别、时间戳、线程信息、进程信息等;
  • 日志输出被设计为线程安全的方式,并支持 异步输出缓冲输出 模式;
  • 支持多种操作系统(RT-Thread、UCOS、Linux、Windows…),也支持裸机平台;
  • 日志支持 RAW格式 ,支持 hexdump
  • 支持按 标签级别关键词 进行动态过滤;
  • 各级别日志支持不同颜色显示;
  • 扩展性强,支持以插件形式扩展新功能。

输出级别

参考 Android Logcat ,级别最高为 0(Assert) ,最低为 5(Verbose) 。

0.[A]:断言(Assert)
1.[E]:错误(Error)
2.[W]:警告(Warn)
3.[I]:信息(Info)
4.[D]:调试(Debug)
5.[V]:详细(Verbose)

代码

需要将以下 文件 添加到工程中

在这里插入图片描述
将elog_cfg.h 配置文件中的异步输出和 缓冲输出 屏蔽
在这里插入图片描述
在接口elog_port.c 中实现所用的接口
在这里插入图片描述
这里重定向到CAN 输出

创建一个测试函数

/**
 * @brief 设置ELOG日志任务
 * @param
 */
void app_elog_init(void)
{

    elog_init(); // 初始化elog   初始化的 EasyLogger 的核心功能,初始化后才可以使用下面的API。
    // 日志颜色功能是将各个级别日志按照颜色进行区分,默认颜色功能是关闭的
    // true: 使能,false: 失能
    elog_set_text_color_enabled(true);

    /* 设置每个级别的日志输出格式*/
    // 输出所有内容
    elog_set_fmt(ELOG_LVL_ASSERT, ELOG_FMT_ALL);

    // 输出日志级别信息和日志TAG
    elog_set_fmt(ELOG_LVL_ERROR, ELOG_FMT_LVL | ELOG_FMT_TAG);
    elog_set_fmt(ELOG_LVL_WARN, ELOG_FMT_LVL | ELOG_FMT_TAG);
    elog_set_fmt(ELOG_LVL_INFO, ELOG_FMT_LVL | ELOG_FMT_TAG);

    // 除了时间、进程信息、线程信息之外,其余全部输出
    elog_set_fmt(ELOG_LVL_DEBUG, ELOG_FMT_ALL & ~(ELOG_FMT_TIME | ELOG_FMT_P_INFO | ELOG_FMT_T_INFO));

    // 输出所有内容
    elog_set_fmt(ELOG_LVL_VERBOSE, ELOG_FMT_ALL);

    // 启动elog  在初始化完成后,必须调用启动方法,日志才会被输出。
    elog_start();

    log_a("Hello EasyLogger!");
    log_e("Hello EasyLogger!");
    log_w("Hello EasyLogger!");
    log_i("Hello EasyLogger!");
    log_d("Hello EasyLogger!");
    log_v("Hello EasyLogger!");
}

实验效果

输出内容 为
[36;22mI/elog EasyLogger V2.2.99 is initialize success.[0m
[35;22mA/NO_TAG [e e e] (…\Mycode\app_user_task.c:100 app_elog_init)Hello EasyLogger![0m
[31;22mE/NO_TAG Hello EasyLogger![0m
[33;22mW/NO_TAG Hello EasyLogger![0m
[36;22mI/NO_TAG Hello EasyLogger![0m
[32;22mD/NO_TAG (…\Mycode\app_user_task.c:104 app_elog_init)Hello EasyLogger![0m
[34;22mV/NO_TAG [e e e] (…\Mycode\app_user_task.c:105 app_elog_init)Hello EasyLogger![0m

可以看到 使用V 详细命令是可以精准定位到函数的某一行代码 处

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/699195.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何更改 Windows 默认下载位置?按照以下步骤操作

大家在使用电脑的过程中常常需要下载一些文件等资源,但是一般没有修改时电脑下载资源之后都默认存放在了 C 盘,这也导致 C 盘的空间越来越小。我们可以提前修改电脑的默认下载位置,下面一起来看一看默认下载位置怎么更改。 修改浏览器默认下…

英伟达SSD目标检测代码解析

一、官方原代码 #!/usr/bin/env python3 # # Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Softwa…

利用 AI 深度学习,实现化合物配比最优化解决方案

为什么需要化合物配比的优化? 在化合物制造行业中,化合物的配比是产品质量控制的关键环节。 化合物制造流程 目前,这一过程高度依赖于材料专家和工程技术人员的经验,通过反复试验来验证产品性能,确保其满足市场和客户的…

Linux内核编程(一)内核模块基础

本文目录 前述:内核框架图一、Linux 内核模块概述二、Linux 模块的优点三、知识点1. GPL开源协议2. 查看已安装的模块文件:lsmod 四、常用API1. 入口函数2. 出口函数3. 声明驱动模型出/入口函数4. printk内核输出函数 五、内核源码头文件六、编写内核模块…

在ubuntu16中下载VMware Tools工具

一、打开植入 二、开始安装 打开驱动放置的默认位置 在这里打开终端;添加到/home/你的用户名/Downloand/中 进入后解压 然后进去解压后的文件 终端输入 sudo ./vmware-install.pl 开始安装前的配置(很麻烦跟着输就行) 继续 出现如上…

电脑想加个WIFI功能,怎么选!

在快速发展的物联网和智能家居时代,Wi-Fi模块作为连接各类智能设备与互联网的桥梁,其重要性不言而喻。而为了让这些模块能够适应各式各样的应用场景,不同的接口技术应运而生。今天,我们就来深入浅出地探讨几种常见的Wi-Fi模块接口,包括它们的工作原理、特点以及适用场景,…

NVIDIA Jetson AI边缘计算盒子

这里写自定义目录标题 烧录系统安装Jetpack 烧录系统 选择一台Linux系统,或者VMware的电脑作为主机,烧录系统和后面安装Jetpack都会用到。 根据供应商的指令烧录的,暂时还没验证官方烧录(后续验证补充)。 安装Jetpac…

Ant Design的创意之旅:设计师眼中的界面艺术

你知道什么是蚂蚁Ant Design?事实上,绝大多数人都不知道甚至没有听说过蚂蚁Ant Design,本文将围绕蚂蚁Ant Design是什么为大家深入分析,方便大家对蚂蚁Antt Design有清晰的认识。 1. 蚂蚁Ant Design是什么 蚂蚁Ant Design可以简…

【笔记】深度学习入门

神经网络基础 计算机视觉 1.1 人工智能的本质——线性模型 ykxb k为权重,b为偏置 像素点有323233072个任务点 所以权重有3072个,假设有10组类别,注意权重是一个矩阵 1.2 模型更新方法 权重一开始是随机的 权重和损失值,尝试…

基于STM32的智能水产养殖系统(二)

TPS5433IDR TPS5433IDR 是一款由德州仪器 (Texas Instruments) 生产的高效降压转换器(Buck Converter)。它能够将较高的输入电压转换为较低的输出电压,适用于各种电源管理应用。 主要特性 输入电压范围: 5.5V 至 36V输出电压范围: 0.9V 至 …

解决方案:昇腾aarch64服务器安装CUDA+GCC+CMake,编译安装Pytorch,华为昇腾HPC服务器深度学习环境安装全流程

目录 一、安装CUDA和cudnn1.1、下载CUDA驱动1.2、安装CUDA驱动1.3、配置环境变量1.4、安装cudnn1.5、安装magma-cuda 二、安装gcc编译器三、安装CMake四、安装NCCL五、编译安装Pytorch5.1、前提准备5.2、下载pytorch源码5.3、配置环境变量5.4、Pytorch编译安装5.5、测试Pytorch…

【Ai】使用LabelStudio做数据标注

一、什么是LabelStudio LabelStudio是一个功能丰富、灵活便捷、易于使用的数据标注工具,适用于各种机器学习和深度学习项目中的数据标注工作。有特点如下: 多功能性:LabelStudio支持为多种数据类型创建自定义标注界面,包括图像、…

python处理 yaml 时保持输入输出格式一致

问题 使用python 自带的 pyyaml库中,读取yaml文件修改 再输出后会有 打印 字段 乱序问题列表格式问题 要想保持顺序不变在 dump时添加 sort_keysFalse,使yaml格式保持原来的排序 def readyaml():with open("../data/testdata.yaml",encodi…

AI大模型火了,你的饭碗要变金饭碗还是铁饭碗?

前言 当前,AI大模型的发展正以前所未有的速度和规模推进,它们凭借其深度学习能力和海量数据训练,在诸多领域展现出了革命性的影响力。这些模型,如OpenAI的GPT系列、阿里云的通义千问等,不仅在自然语言处理上取得了显著…

惠海 H6901B升压恒流调光芯片3.7V 7.4V 12V 24V 30V 36V 48V 60V 80V 100V –光滑细腻无频闪-高端调光 太阳能照明

H6901B是一款升压型LED恒流驱动芯片,具有良好稳定性的特点。H6901B的主要特点包括宽输入电压范围(2.7V-100V)、高工作频率(1MHz)以及多种保护功能(如芯片供电欠压保护、过温保护、软启动等)。此…

Frontiers旗下期刊,23年分区表整理出炉!它还值得投吗?

本周投稿推荐 SSCI • 中科院2区,6.0-7.0(录用友好) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好) SCI&EI • 4区生物医学类,0.5-1.0(录用…

Ps:自动批量处理照片

有很多种方法可以将调色风格一次性应用到多张照片上。 但对于要进行局部修饰的照片,比如人像照片中要去除皮肤上的瑕疵、柔化皮肤上的光影以及均匀肤色等,想要实现成批处理似乎很困难。 随着人工智能技术的不断发展,越来越多的插件具备自动修…

小家电Type-C接口PD诱骗芯片 6500

随着科技的飞速发展,小家电设备越来越智能化,Type-C接口在小家电设备中的应用也越来越广泛。然而,由于Type-C接口的多样性,如何确保设备能够正确识别并使用各种不同的充电方式,成为了一个亟待解决的问题。这时候&#…

LVGL欢乐桌球游戏(LVGL+2D物理引擎学习案例)

LVGL欢乐桌球游戏(LVGL2D物理引擎学习案例) 视频效果: https://www.bilibili.com/video/BV1if421X7DL

直线度测量仪发展历程!

直线度测量仪的发展历程可以概括为以下几个关键阶段: 拉钢丝法: 早期直线度测量的简单直观方法,利用钢丝受重力自然下垂的原理来测量直线度误差。 随着机械设备的大型化和测量精度要求的提高,该方法逐渐无法满足要求,正…