linux c c 常用的日志库,mslog: 一款超轻量级的C日志库,无需依赖额外的库,测试或移植过的系统有Linux(ubuntu,centos),Windows以及部分嵌入式设备;...

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue中正确使用jQuery的方法

题主Vue小白&#xff0c;入门demo时想在其中使用jQuery&#xff08;当然可能是不推荐的做法哈&#xff0c;毕竟俩儿的风格不一样&#xff0c;但万一你就需要呢 _^ ^_&#xff09;&#xff0c;结果遇到问题&#xff0c;最终倒腾解决。 编译报错&#xff1a;$ is undefined or no…

python中superclass是什么_深度解析并实现python中的super(转载,好文)

大神半个月的成绩&#xff0c;让我看的叹为观止&#xff0c;建议看原帖地址&#xff0c;会让你对Python的描述符有更强的认识。原文链接&#xff1a;https://blog.csdn.net/zhangjg_blog/article/details/83033210深度解析并实现python中的super概述super的定义函数bound和描述…

实例12:python

#判断101-200之间有多少个素数&#xff0c;并输出所有素数。 #程序分析&#xff1a;判断素数的方法&#xff1a;用一个数分别去除2到sqrt(这个数)&#xff0c;如果能被整除&#xff0c;则表明此数不是素数&#xff0c;反之是素数。 #!/usr/bin/python -- coding: UTF-8 -- #…

linux显示gz文件字节大小,[原创] 如何不解压tar.gz文件查看其中的文件大小

如果你有一个上百G的tar.gz文件&#xff0c;要查看里面的每个文件的大小的话&#xff0c;解压出来可能太费时间&#xff0c;而且要占用大量磁盘空间。因此&#xff0c;不解压查看文件大小很有必要。不解压一个tar.gz文件&#xff0c;查看里面的文件明细的命令为&#xff1a;tar…

javascript用户登录_SAP HANA XS的JavaScript安全事项

公众号&#xff1a;matinal前言部分我们都知道web程序都有潜在的安全隐患问题&#xff0c;那么SAP HANA XS的JavaScript也是一样&#xff0c;使用服务器端JavaScript编写应用程序代码&#xff0c;也有潜在的外部攻击&#xff08;和风险&#xff09;。注意事项下面列出几点注意事…

周进度报告8

在本周中主要因为c小学期&#xff0c;对Java的学习较少&#xff0c;下周会合理安排时间转载于:https://www.cnblogs.com/NCLONG/p/9574965.html

Python sqrt() 函数

描述 sqrt() 方法返回数字x的平方根。 语法 以下是 sqrt() 方法的语法: import math math.sqrt( x ) 注意&#xff1a;sqrt()是不能直接访问的&#xff0c;需要导入 math 模块&#xff0c;通过静态对象调用该方法。 参数 • x – 数值表达式。 返回值 返回数字x的平方根。 实例…

linux 网络设备 安装,Linux_Linux系统配置网络详解,一.安装和配置网络设备- phpStudy...

一.安装和配置网络设备在安装linux时,如果你有网卡,安装程序将会提示你给出tcp/ip网络的配置参数,如本机的ip地址,缺省网关的ip地址,DNS的ip地址等等.根据这些配置参数,安装程序将会自动把网卡(linux系统首先要支持)驱动程序编译到内核中去.但是我们一定要了解加载网卡驱动程序…

python透明图片合并_Python用OpenCV合并图片,添加透明部分

看了python网上图片合并都是互抄&#xff0c;其实大部分人需要的合并只需要把一个图片粘贴到另一张图片就行了。下面是合并前的图片&#xff1a;底图下面是需要合并的素材&#xff1a;需要合并的素材合并后的效果&#xff1a;合并后的图片图片准备工作&#xff1a;1: 确保两张图…

实例13:python

#题目&#xff1a;打印出所有的"水仙花数"&#xff0c;所谓"水仙花数"是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个"水仙花数"&#xff0c;因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方…

spring的基本用法

关于spring的几种注入方式 理解类之间的关联关系 一&#xff0c;set注入 在这之前我们得spring的jar包&#xff0c;可以去官网下&#xff0c;添加到WebContent下 WEB-INF 下 lib里 这种方式就得首先实现set方法&#xff0c;现在以英雄&#xff08;Hero接口&#xff09;和武器&a…

python u_对python 命令的-u参数详解

缘起&#xff1a;今天在看arcface的训练代码&#xff0c;在shell脚本中运行python 命令时后面加了-u 参数(python -u xx.py)&#xff0c;于是对这个参数进行了下小研究。准备知识用网上的一个程序示例来说明&#xff0c;python中标准错误(std.err)和标准输出(std.out)的输出规则…

linux下anaconda3安装教程,Ubuntu18.04 安装 Anaconda3的教程详解

Anaconda指的是一个开源的Python发行版本&#xff0c;其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包&#xff0c;Anaconda 的下载文件比较大(约 531 MB)&#xff0c;如果只需要某些包&#xff0c;或者需要节省带宽或存储空间&#xff0c;也可以使用…

实例14:python

#将一个正整数分解质因数。例如&#xff1a;输入90,打印出90233*5。 #对n进行分解质因数&#xff0c;应先找到一个最小的质数k&#xff0c;然后按下述步骤完成&#xff1a; #(1)如果这个质数恰等于n&#xff0c;则说明分解质因数的过程已经结束&#xff0c;打印出即可。 #(2)如…

call,apply,bind的用法与区别

1.call/apply/bind方法的来源 首先&#xff0c;在使用call&#xff0c;apply&#xff0c;bind方法时&#xff0c;我们有必要知道这三个方法究竟是来自哪里&#xff1f;为什么可以使用的到这三个方法&#xff1f; call&#xff0c;apply&#xff0c;bind这三个方法其实都是继承自…

while(1)和while(0)

while语句的原型是while(表达式)语句&#xff0c;当表达式为非0值时&#xff0c;执行while语句中的嵌套语句。 1.while(1)其中1代表一个常量表达式&#xff0c;它永远不会等于0。循环会一直执行下去。除非你设置break等类似的跳出循环语句循环才会中止。 2.while(i–)其中i是一…

幅值与峰峰值的计算_电厂振动测量、计算基础及汽轮机组振动标准!

法律顾问&#xff1a;张友全律师正文&#xff1a;电厂振动测量、计算基础及汽轮机组振动标准&#xff01;1. 常用的振动测量参数常用的振动测量参数有振幅、振动速度(振速)、振动加速度。对应单位表示为&#xff1a;mm、mm/s、mm/s。 振幅是表象&#xff0c;定义为在波动或振动…

实例15:python

#利用条件运算符的嵌套来完成此题&#xff1a;学习成绩>90分的同学用A表示&#xff0c;60-89分之间的用B表示&#xff0c;60分以下的用C表示。 #!/usr/bin/python -- coding: UTF-8 -- score int(input(‘输入分数:\n’)) if score > 90: grade ‘A’ elif score &g…

对比分析

【课程1.3】 对比分析对比分析 → 两个互相联系的指标进行比较绝对数比较&#xff08;相减&#xff09; / 相对数比较&#xff08;相除&#xff09; 结构分析、比例分析、空间比较分析、动态对比分析 import numpy as np import pandas as pd import matplotlib.pyplot as plt…

平面设计中的网格系统pdf_深入浅出,带你认识网格系统与版式设计

设计分享 研习设 设计Hello大家好&#xff0c;这里是研习设计分享。时不时分享/新鲜/有趣/有料/设计资讯和案例&#xff0c;欢迎大家订阅关注&#xff01;~预估阅读时间&#xff1a;10分钟ME研习设小研研&#xff1a;今天&#xff0c;和大家深入浅出&#xff0c;带你认识网格系…