极简的约定大于配置的c语言日志库
- 参考了zlog和EasyLogger的写法,考虑到这是一个工具库
- 因此目标是写了一个简单、高可用的、无配置的日志组件框架和库.
- 使用springboot的约定大于配置的历年,不需要任何设置init,start等,直接islog_debug即可输出日志.
- 当然,也可以通过各种暴露的对外函数,对各种属性进行配置以及自定义回调函数等。
islog日志库包含如下几点功能:
- 基于tag的信息配置
- 默认使用的默认tag,即DEFAULT,此时默认的fmt不显示.
- 可以基于不同的tag,使用不同的所有配置,默认最多可以设置ISLOG_TAG_NUM个tag
- 如果使用tag时,使用islog_xxxx_t系列函数 使用扩展宏定义define,来区分不同的tag,如XIPLOG,APPLOG
- 日志的输出级别:
- 控制方式:
- 静态、通过宏定义来实现,编译时使用。(因为是类库,也很重要)
- 动态、通过API接口来实现,运行时使用。
- 级别:
- debug, 调试信息
- info, 正常信息
- warn, 警告信息
- error, 错误信息
- 输出的格式定义支持:
- 支持 日志级别、打印时间、业务标签(MDC?)、进程信息、线程信息、文件路径、行号、方法名
- 支持自定义format的扩展。
- TODO hex 16进制格式,主要用于展示不可见报文
- TODO raw 原始格式,是啥就是啥,完全不加工
- 输出内容的过滤:
- 支持敏感信息如证件号、手机号中间字段的星号加密模式
- 输出方式:
- 内嵌支持输出到终端
- 内嵌支持文件输出,需要支持:
- 文件转档
- 支持扩展输出到远程的信息上,比如syslog或者其他上面,通过回调函数来实现
- 支持以上几种输出方式的组合
- TODO 日志输出,使用ringbuffer,支持异步日志输出