# islog **Repository Path**: icesky1stm/islog ## Basic Information - **Project Name**: islog - **Description**: 一个极简的、无配置的、线程安全的、C语言日志库。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 2 - **Created**: 2021-01-19 - **Last Updated**: 2022-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 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 2. 日志的输出级别: - 控制方式: 1) 静态、通过宏定义来实现,编译时使用。(因为是类库,也很重要) 2) 动态、通过API接口来实现,运行时使用。 - 级别: - debug, 调试信息 - info, 正常信息 - warn, 警告信息 - error, 错误信息 3. 输出的格式定义支持: - 支持 日志级别、打印时间、业务标签(MDC?)、进程信息、线程信息、文件路径、行号、方法名 - 支持自定义format的扩展。 - TODO hex 16进制格式,主要用于展示不可见报文 - TODO raw 原始格式,是啥就是啥,完全不加工 4. 输出内容的过滤: - 支持敏感信息如证件号、手机号中间字段的星号加密模式 5. 输出方式: - 内嵌支持输出到终端 - 内嵌支持文件输出,需要支持: - 文件转档 - 支持扩展输出到远程的信息上,比如syslog或者其他上面,通过回调函数来实现 - 支持以上几种输出方式的组合 - TODO 日志输出,使用ringbuffer,支持异步日志输出