1
0
mirror of https://github.com/armink/EasyLogger.git synced 2025-02-01 05:52:52 +08:00
EasyLogger/README.md
armink dda123630e 1、【增加】用户自定义换行符。
Signed-off-by: armink <armink.ztl@gmail.com>
2015-06-23 15:56:41 +08:00

113 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# EasyLogger
---
# 1. 介绍
EasyLogger是一款超轻量级(ROM<1.6K, RAM<0.3K)、高性能的C日志库非常适合对资源敏感的软件项目例如IoT产品可穿戴设备智能家居等等相比log4czlog这些知名的C日志库EasyLogger的功能更加简单提供给用户的接口更少但上手会很快更多实用功能支持以插件形式进行动态扩展
## 1.1 主要特性
- 支持用户自定义输出方式例如终端文件数据库串口485Flash...
- 日志内容可包含级别时间戳线程信息进程信息等
- 日志输出被设计为线程安全的方式
- 支持多种操作系统[RT-Thread](http://www.rt-thread.org/)UCOSLinuxWindows...也支持裸机平台
- 日志支持 **RAW格式**
- 支持按 **标签** **级别** **关键词** 进行动态过滤
- 扩展性强支持以插件形式扩展新功能
> 名词解释:
1RAW格式未经过格式化的原始日志
2标签在软件中可以按照文件模块功能等方面对需要打印的日志设定标签实现日志分类
## 1.2 插件
- 1. Flash Log使用[EasyFlash](https://github.com/armink/EasyFlash)库提供的无缝接口可以把日志直接存储在Flash中
## 1.3 Star & Fork
后续我还会提供更多插件也非常欢迎大家设计开发更多实用插件和功能一起来完善EasyLogger **([Github](https://github.com/armink/EasyLogger)|[OSChina](http://git.oschina.net/armink/EasyLogger)|[Coding](https://coding.net/u/armink/p/EasyLogger/git))** 同时把它推广给更多有需要的朋友
# 2. 使用
### 2.1 参数配置
EasyLogger拥有过滤方式输出格式输出开关这些属性
- 过滤方式支持按照标签级别关键词进行过滤
- 可以动态的开启/关闭日志的输出
- 可设定动态和静态的输出级别静态一级开关通过宏定义动态二级开关通过API接口)。
> 注:目前参数配置及输出方式都是单例模式,即全局只支持一种配置方式。此模式下,软件会较为简单,但是无法支持复杂的输出方式。
### 2.2 输出级别
参考Android Logcat级别最高为0(Assert)最小为5(Verbose)。
```
0.[A]:断言(Assert)
1.[E]:错误(Error)
2.[W]:警告(Warn)
3.[I]:信息(Info)
4.[D]:调试(Debug)
5.[V]:详细(Verbose)
```
### 2.3 输出过滤
#### 2.3.1 过滤级别
默认过滤级别为5(详细)用户可以任意设置在设置高优先级后低优先级的日志将不会输出例如设置当前过滤的优先级为3(警告)则只会输出优先级别为警告错误断言的日志
#### 2.3.2 过滤标签
默认过滤标签为空字符串("")即不过滤当前输出日志的标签会与过滤标签做字符串匹配日志的标签包含过滤标签则该输出该日志例如设置过滤标签为WiFi则系统中包含WiFi字样标签的WiFi.BSPWiFi.ProtocolSetting.WiFi日志都会被输出
#### 2.3.3 过滤关键词
默认过滤关键词为空字符串("")即不过滤检索当前输出日志中是否包含该关键词包含则允许输出
> 对于配置较低的MCU建议不开启关键词过滤默认为不过滤增加关键字过滤将会在很大程度上减低日志的输出效率。实际上过滤关键词功能交给上位机做会更轻松所以后期的跨平台日志助手开发完成后就无需该功能。
### 2.4 输出格式
输出格式支持级别时间标签进程信息线程信息文件路径行号方法名
> 注:默认为 **RAW格式**RAW格式日志不支持标签过滤
### 2.5 输出方式
通过用户的移植可以支持任何一种输出方式只不过对于某种输出方式可能引入的新功能需要通过插件实现例如文件转存检索Flash日志等等后期会有更多的插件开源出来下面简单对比下部分输出方式使用场景
- 终端方便用户动态查看不具有存储功能
- 文件与Flash都具有存储功能用户可以查看历史日志但是文件方式需要文件系统的支持而Flash方式更加适合应用在无文件系统的小型嵌入式设备中
### 2.6 Demo
### 2.6.1 核心功能
下图为在终端中输入命令来控制日志的输出及过滤器的设置更加直观的展示了EasyLogger核心功能
![easylogger](http://git.oschina.net/Armink/EasyLogger/raw/master/docs/zh/images/EasyLoggerDemo.gif)
> 以上内容对应的API可以打开[思维导图](http://naotu.baidu.com/viewshare.html?shareId=ausqm3j44f4k)看到更清晰的逻辑。
### 2.6.2 Flash Log
下图过程为通过控制台输出日志并将输出的日志存储到Flash中重启再读取上次保存的日志最后清空Flash日志
![FlashLog](http://git.oschina.net/Armink/EasyLogger/raw/master/docs/zh/images/LogDemo.gif)
# 3. 后期
- 1、~~Flash存储[EasyFlash](https://github.com/armink/EasyFlash)中增加日志存储读取功能让EasyLogger与其无缝对接使日志可以更加容易的存储在 **非文件系统** ~~并具有历史日检索的功能
- 2文件转档文件系统下支持文件按容量转档按时间区分
- 3异步输出目前日志输出与用户代码之间是同步的方式这种方式虽然软件简单也不存在日志覆盖的问题但在输出速度较低的平台下会由于增加日志功能而降低软件运行速度所以后期会增加 **异步输出** 方式关键字过滤也可以放到异步输出中去
- 4配置文件文件系统下的配置文件
- 5日志助手开发跨平台的日志助手兼容LinuxWindowsMac系统打开助手即可查看过滤支持正则表达式)、排序保存日志等计划使用[NW.js](http://www.oschina.net/p/nwjs)框架
- 6Arduino增加Arduino lib并提供其Demo
# 4. 许可
MIT Copyright (c) armink.ztl@gmail.com