Skip to content

one c file log lib.noconfig(convention over configuration)

License

Notifications You must be signed in to change notification settings

icesky1stm/islog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

islog

极简的约定大于配置的c语言日志库

概述:

  • 参考了zlog和EasyLogger的写法,考虑到这是一个工具库
  • 因此目标是写了一个简单、高可用的、无配置的日志组件框架和库.
  • 使用springboot的约定大于配置的历年,不需要任何设置init,start等,直接islog_debug即可输出日志.
  • 当然,也可以通过各种暴露的对外函数,对各种属性进行配置以及自定义回调函数等。

功能:

islog日志库包含如下几点功能:

  1. 基于tag的信息配置
  • 默认使用的默认tag,即DEFAULT,此时默认的fmt不显示.
  • 可以基于不同的tag,使用不同的所有配置,默认最多可以设置ISLOG_TAG_NUM个tag
  • 如果使用tag时,使用islog_xxxx_t系列函数 使用扩展宏定义define,来区分不同的tag,如XIPLOG,APPLOG
  1. 日志的输出级别:
  • 控制方式:
  1. 静态、通过宏定义来实现,编译时使用。(因为是类库,也很重要)
  2. 动态、通过API接口来实现,运行时使用。
  • 级别:
    • debug, 调试信息
    • info, 正常信息
    • warn, 警告信息
    • error, 错误信息
  1. 输出的格式定义支持:
  • 支持 日志级别、打印时间、业务标签(MDC?)、进程信息、线程信息、文件路径、行号、方法名
  • 支持自定义format的扩展。
  • TODO hex 16进制格式,主要用于展示不可见报文
  • TODO raw 原始格式,是啥就是啥,完全不加工
  1. 输出内容的过滤:
  • 支持敏感信息如证件号、手机号中间字段的星号加密模式
  1. 输出方式:
  • 内嵌支持输出到终端
  • 内嵌支持文件输出,需要支持:
    • 文件转档
  • 支持扩展输出到远程的信息上,比如syslog或者其他上面,通过回调函数来实现
  • 支持以上几种输出方式的组合
  • TODO 日志输出,使用ringbuffer,支持异步日志输出

About

one c file log lib.noconfig(convention over configuration)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published