linux c log 日志接口
#define SIZE_16M 16777216 //1024*1024*16
#define LOG_FILE_PATH "./mylog.txt" //日志文件路径
#define LOG_PARAMS LOG_FILE_PATH,__FILE__,__func__,__LINE__ //日志文件路径 调用函数所在文件 调用函数名 调用debugInfo时所在行号
//显示调用debugInfo接口的函数所在的文件名、函数名、行号
int debugInfo(char *pLogPath, char *pFile, const char *pFuncName, int iLineNumb, char *fmt, ...); //调用举例: debuInfo(LOG_PARAMS, “some string %s, some int %d and so on", "hello log", 101); //日志的编号
int giInfoNumb = ;
int debugInfo(char *pLogPath, char *pFile, const char *pFuncName, int iLineNumb, char *fmt, ...)
{
if(NULL == pLogPath ||'\0' == pLogPath[] || NULL == pFile || '\0' == pFile[] || NULL == pFuncName ||'\0' == pFuncName[])
return VS_ERR;
//判断文件大小是否清空该文件,每1000次写日志里检测1次文件大小
if( == (giInfoNumb % ))
{
struct stat fileStat;
if( == stat(pLogPath, &fileStat) && fileStat.st_size > SIZE_16M)
remove(pLogPath);
}
//打开文件,写入日志
FILE *pLogHandle = fopen(pLogPath, "a+");
if(NULL == pLogHandle)
return VS_ERR;
//写入日期、函数信息
time_t timeSecs = time(NULL);
struct tm *timeInfo = localtime(&timeSecs);
char acTitle[STR_LEN_2048] = { };
snprintf(acTitle, sizeof(acTitle), "[%04d] [%d%02d%02d/%02d:%02d:%02d] [%s] [%s:%d]\n", giInfoNumb++,
timeInfo->tm_year + , timeInfo->tm_mon + , timeInfo->tm_mday,
timeInfo->tm_hour, timeInfo->tm_min, timeInfo->tm_sec, pFile, pFuncName, iLineNumb);
int iLen = strlen(acTitle);
fwrite(acTitle, iLen, , pLogHandle);
//写入日志
fwrite("\t\t\t", , , pLogHandle);
memset(acTitle, , sizeof(acTitle));
va_list args;
va_start(args, fmt);
vsnprintf(acTitle, sizeof(acTitle), fmt, args);
va_end(args);
iLen = strlen(acTitle);
fwrite(acTitle, iLen, , pLogHandle);
fwrite("\n", , , pLogHandle);
//关闭日志文件
fclose(pLogHandle);
return VS_OK;
}
linux c log 日志接口的更多相关文章
- Linux操作系统log日志日志分别指什么
Linux操作系统log日志日志分别指什么 2019-04-20 20:41:05 一.一般的日志 /var/log/messages —包括整体系统信息,其中也包含系统启动期间的日志.此外,m ...
- Linux**系统实现log日志自动清理
Linux系统实现log日志自动清理 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- Linux系统的LOG日志文件及入侵后日志的清除
UNIX网管员主要是靠系统的LOG,来获得入侵的痕迹.当然也有第三方工具记录入侵系统的 痕迹,UNIX系统存放LOG文件,普通位置如下: /usr/adm - 早期版本的UNIX/var/adm - ...
- linux log日志解析
linux log日志解析 其实,可以说成是监控系统的记录,系统一举一动基本会记录下来.这样由于信息非常全面很重要,通常只有 root 可以进行视察!通过登录文件(日志文件)可以根据屏幕上面的错误 ...
- Linux /var/log下各种日志文件
Linux /var/log下各种日志文件:
- linux 如何截取一段时间内log日志
截取一段时间内的log日志可以使用sed命令对log文件进行抽取操作: 1,sed查看某时间段到现在的系统日志:sed -n '/May 20 17/,$p' /var/log/messages | ...
- 模块(二)——简单的log日志
简单的log日志 鉴于任何功能模块或系统在调试时都需要日志打印,这里随便写了一下,作为以后代码调试之用,只实现了不同等级的日志输出功能,其他的调试功能以后再行添加:使用方法简单,只需要在头文件里事先按 ...
- 全栈必备Log日志
Log日志,不论对开发者自身,还是对软件系统乃至产品服务都是非常重要的事情.每个开发者都接触过日志,以至于每个人对日志的了解都会有所不同. 什么是日志 日志是什么呢?老码农看来,日志是带有明确时间标记 ...
- Linux系统日志及日志分析
Linux系统日志及日志分析 Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息. 大部分Linux发行版默认的日志守护进程为 syslog,位 ...
随机推荐
- gridcontrol表头设置
点击Run Disigner进入设计界面,设置颜色字体等信息在Appearance分支下面,设置行为功能,显示区域等在Options分支下面.
- ubuntu中文设置方法
1.首先打开ubuntu设置(右上角的齿轮),或者直接在左面找到设置,如下图所示. 2.然后点[language support]设置,如下图所示. 3.在弹出的窗口再点击[install]设置操作, ...
- (转)Scala的“=>”符号简介
Scala中的=>符号可以看做是创建函数实例的语法糖.例如:A => T,A,B => T表示一个函数的输入参数类型是“A”,“A,B”,返回值类型是T.请看下面这个实例: scal ...
- java web 拦截器、过滤器理解
1.首先要明确什么是拦截器.什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加 ...
- qq邮箱、qq空间点击后以word方式打开解决办法
解决办法: Internet--工具--Internet选项--程序--设为默认值
- vue - node_modules
详情见:node_modules导包机制 在打包或者结束项目时,这个文件夹(node_modules)不应该被打包. 你应该打包其它的文件,如果要运行(直接用以下命令安装即可,它会根据package. ...
- vs2012升级到vs2013后,sql server 无法通过IP登录解决方案
因项目需要,vs升级到2013,可是数据库通过IP却无法连接,一直报内存异常,困扰许久,原来是.net框架出了问题,可以通过用管理员身份运行:netsh winsock reset解决!
- Hibernate开发环境搭建
一.下载Hibernate包的下载 官网地址:http://hibernate.org/orm/ 下载版本:hibernate-release-4.3.11.Final 二.Hibernate jar ...
- OOP Class具体解释
对象[编辑] 对象(Object)是类的实例.比如."狗"这个类列举狗的特点,从而使这个类定义了世界上全部的狗. 而莱丝这个对象则是一条详细的狗,它的属性也是详细的.狗有皮毛颜色. ...
- 使用Loadrunner进行文件的上传和下载
最近使用loadrunner中需要录制文件的上传和下载,上传功能模块利用录制可以直接实现,下载无法实现,在网上找到了一段代码,自己动手试验了下,发现没有用 辛苦找到的,还是记录下吧 (1)LoadRu ...