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,位 ...
随机推荐
- Linux 调度器发展简述
引言 进程调度是操作系统的核心功能.调度器只是是调度过程中的一部分,进程调度是非常复杂的过程,需要多个系统协同工作完成.本文所关注的仅为调度器,它的主要工作是在所有 RUNNING 进程中选择最合适的 ...
- 数据库建模软件ERStudio-表关系建模详解
ERStudio是优秀的数据库建模软件,它不仅可以建立表.视图等模型,还可以建立多表间各种关系的模型,另外还可以根据模型生成表到数据库,下面具体讲解一下它的表关系建模. 1. 首先讲一下怎么建立表关系 ...
- thinkphp5.0 中使用第三方无命名空间的类库
ThinkPHP5建议所有的扩展类库都使用命名空间定义,如果你的类库没有使用命名空间,则不支持自动加载,必须使用Loader::import方法先导入文件后才能使用. 首先要在文件头部使用loader ...
- Maven+SpringMVC+Mybatis整合入门Demo
1 数据库准备 (1)建立一个名为mytest的数据库 (2)创建表 CREATE TABLE `t_user` ( `USER_ID` int(11) NOT NULL AUTO_INCREMENT ...
- Azkaban配置
1,新建azkaban目录,用于安置azkaban程序 2,azkaban web服务器安装 解压 azkaban-web-server-2.5.0.tar.gz tar -zvxf azkaban ...
- Redis中为什么使用跳表---------转自http://blog.csdn.net/u010412301/article/details/64923131
最近在研究数据库的一些底层实现,百度的面试官问到了跳表,当时没有回答上来,在csdn上看到了这篇文章,感觉写的比较好,希望大家可以多多交流. Redis里面使用skiplist是为了实现sorted ...
- nodejs vue SyntaxError:Block-scoped declarations (let,const,function,class) not yet supported
下午在git上导入之前写的代码到本地环境,执行npm run dev报错. 在我之前的环境中是没有问题的,这个错误信息也没看懂是什么原因引起的, 猜测可能是nodejs版本太低,于是重新下载了一个wi ...
- 记一次vue2项目部署nginx静态文件404解决过程
github上下的一个vue2的项目,运行可以的,webpack打包后,nginx请求报错: 发现路径很奇怪啊,所以果断来到build.js文件中看看是不是哪里不对. 已经一番引用查找: 发现在这里配 ...
- 猫猫学iOS之UITextField右边设置图片,以及UITextField全解
猫猫分享,必须精品 原创文章.欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 效果: 封装好的方法: 猫猫封装的一个小方法,简单共享出来,方便 ...
- Win7 64位 IIS未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项.试图加载格式不正 解决方案: 1.需要在IIS里设置,启用32位应用程序我用的是iis7 把启用32位应用程序的fals ...