mslog
1.综述
一款超轻量级的C日志库,无需依赖额外的库,库的设计目标为"简洁,可移植性强"。测试或移植过的系统有Linux(ubuntu,centos),Windows以及部分嵌入式设备。
2.如何使用
参考mslog_api_sample程序;
关于编译与安装,可参见make help;
3.功能概要
C语言基本数据类型;
日志级别一共有7个级别:
fatal(严重错误),error(错误),waring(警告),info(信息),debug(调试),verbose(冗余),more(详细);
每个级别分别实现不同颜色的显示,依次为:
brightblue,brightred,brightyellow,brightcyan,none,green,black
日志库支持标准输出;
日志库支持输出函数行和函数名;
日志库支持输出日志信息到日志文件,且保存目录可自定义;
日志库支持2种输出时间:<1>%Y-%M_%D %H:%M:%S;<2>微秒时间;
日志库支持多线程安全输出;
支持x8664,aarch64和armv7l架构;
4.数据类型
基本数据类型
//base data type
有符号数据类型:ms_s64 ms_s32 ms_s16 ms_s08 ms_float ms_double
无符号数据类型:ms_u64 ms_u32 ms_u16 ms_u08 ms_lu64
有符号指针数据类型: ms_ps64 ms_ps32 ms_ps16 ms_ps08
无符号指针数据类型: ms_pu64 ms_pu32 ms_pu16 ms_pu08
空数据类型: ms_void ms_pvoid
字节和数组数据类型
字节性数据类型:ms_byte ms_pbyte
数组性数据类型:ms_array ms_parray
布尔性数据类型
布尔性数据类型:ms_bool ms_pbool
条件为真:ms_true
条件为假:ms_false
字符串性数据类型
字符串数据类型:ms_string ms_pstring
固定字符串数据类型:ms_cstring ms_pcstring
函数传入参数或数据结构成员类型数据类型
ms_in 参数作为传入值,由函数外部传入供函数内部使用;
ms_out 参数作为获取值,由函数内部传入供函数外部使用;
ms_io 参数是复合类型,部分作为传入值,部分作为获取值;
ms_inner数据结构内部使用,不与外部进行值的交换;
数据最大值
ms_f3232位数据无效值
ms_f1616位数据无效值
ms_f0808位数据无效值
ms_sf(ms_fnum)有符号数据最大值,联合 ms_f*型使用;
空指针
ms_null
5.接口说明
基本函数名
mslog_innerapi_*:
库内部使用,将不详解;
ms_string mslog_api_version(ms_void);
获取库支持的功能模块
ms_string mslog_api_version(ms_void);
获取库版本号
ms_void mslog_api_new(ms_void)
重新打开日志文件。由于日志文件名跟时间相关,因此会产生一个新的日志文件;
ms_void mslog_api_setopt(ms_u32 ms_in logopt,ms_string ms_in dir,ms_u32 maxlen);
设置日志选项、日志保存目录和最大BUF长度,并初始化环境。
logopt选项是由32位整形表示:
前4位表示日志级别,分别为严重错误,错误,警告,信息,调试,冗余,详细;
第5位标识是否开启标准终端输入和输出;
第6位标识日志是否添加行和API接口名信息;
第7位标识是否将日志打印到日志文件;
dir:日志保存目录,最大支持256个字节长度,传入ms_null则保存到/tmp目录;
maxlen:文件保存的最大块长度,若传入0则使用默认值409600
ms_u32 mslog_api_getopt(ms_void);
获取当前的日志选项值;
void mslog_api_unsetopt(void);
清除日志环境;
日志打印函数:日志标签由模块定义的宏FLAG统一提供,基本打印
ms_fatal(fmt, arg...)
ms_error(fmt, arg...)
ms_waring(fmt, arg...)
ms_info(fmt, arg...)
ms_debug(fmt, arg...)
ms_verbose(fmt, arg...)
ms_more(fmt, arg...)
日志打印函数:日志标签由模块定义的宏FLAG统一提供,带返回值
ms_warnoret(frm,arg...)
ms_errret(ret,frm,arg...)
ms_errnoret(frm,arg...)
日志打回函数:日志标签由模块定义的宏FLAG统一提供,带跳转功能
ms_debuggoto
ms_infogoto(gval,frm,arg...)
ms_errgoto(gval,frm,arg...)
日志打回函数:日志标签由模块定义的宏FLAG统一提供,带程序退出功能
ms_errexit(ret,frm,arg...)
日志打回函数:日志标签由模块定义的宏FLAG统一提供,调试用-函数进入、退出和行打印
ms_funcenter
ms_funcleave
ms_funcline
日志打回函数:日志标签由模块定义的宏FLAG统一提供,功能不支持
ms_funcnosupport(arg)
功能不支持日志,功能名由arg传入
ms_funcnosupports
功能不支持日志,功能名是打印所在的函数
日志打回函数:日志标签由模块定义的宏FLAG统一提供,功能未授权
ms_funcunauthent(arg)
功能未授权日志,功能名由arg传入
ms_funcunauthents
功能未授权日志,功能名是打印所在的函数
日志打回函数:日志标签由模块定义的宏FLAG统一提供,功能需要修复
ms_fix(frm,arg...)
日志打回函数:日志标签由模块定义的宏FLAG统一提供,功能函数已被抛弃建议用新功能函数
ms_deprecated(oldfunc_name,newfunc_name)
日志打回函数:日志标签由模块定义的宏FLAG统一提供
ms_num2str(num)
将64位num转换为字符串返回
ms_bitbyte64(num_h,num_l)
ms_bitbyte32(num_h,num_l)
ms_bitbyte64_unit(num_h,num_l,unit)
#define ms_bitbyte32_unit(num_h,num_l,unit)
日志打回函数:日志标签由模块定义的宏FLAG统一提供,BUF打印
ms_buf(description, buf, len)
将BUF中的数据以2进制方式显示,每行显示16个字节,不足16字节补0,日志级别为调试
ms_errbuf(description, buf, len)
将BUF中的数据以2进制方式显示,每行显示16个字节,不足16字节补0,日志级别为错误
ms_bufascii(description, buf, len)
将BUF中的数据以ASCII方式显示,每行显示16个字节,不足16字节补0,日志级别为调试
日志打回函数:日志标签由模块定义的宏FLAG统一提供,带开关功能
ms_enerr(enable,fmt, arg...)
ms_endbg(enable,fmt, arg...)
ms_eninfo(enable,fmt, arg...)
ms_enverbose(enable,fmt, arg...)
ms_enhlight(enable,fmt, arg...)
ms_enbuf(enable,description, buf,len)
日志打回函数:日志标签由模块定义的宏FLAG统一提供,参数检测
ms_bufchecknoret(dbuf)
ms_bufcheck(dbuf)
ms_bufcheck_des(buf,fmt,arg...)
ms_bufcheckret(ret,dbuf)
ms_bufcheckret_des(ret,buf,fmt,arg...)
ms_bufcheckgoto(gval,dbuf)
ms_bufcheckgoto_des(gval,buf,fmt,arg...)
ms_pamnocheck(dbuf)
ms_pamcheck(buf,strname)
ms_pamcheckret(ret,buf,strname)
ms_pamcheckgoto(gval,buf,strname)
ms_pamnocheck(dbuf)
日志功能选项
mslog_enable_stdprint
mslog_enable_linefunc
mslog_enable_filelog
mslog_enable_timeus
6.关于
版本:v2.0.0
作者:smartavs