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,位 ...
随机推荐
- unity lightmap
indirect light /shadow /ao light probe for dynamic 或者细小琐碎的物体 ========================== unity2018.3 ...
- 使用JEECG过程中的问题汇总(持续更新)
1.首次启动Tomcat服务时,控制台信息提示请使用SQL Server 2005或更高版本. <dependency> <groupId>org.jeecgframework ...
- Hadoop端口一览表
Hadoop端口一览表 @(Hadoop) 端口名 用途 50070 Hadoop Namenode UI端口 50075 Hadoop Datanode UI端口 50090 Hadoop Seco ...
- Java Web 设置默认首页 (也就是http://域名/项目名称/)访问的页面
第一种: 默认的是index.jsp页面,放在webapp文件夹下 在web.xml配置如下 第二种: 默认的页面不是放在webapp文件夹下,而是放在web-inf下,那么此时可以用springMV ...
- Microsoft.Office.Workflow.Actions Namespace
Microsoft.Office.Workflow.Actions Namespace SharePoint 2010 Contains the workflow activities that ...
- 使用ant运行testng的testng.xml并且使用testng-results.xsl美化结果
先看build.xml <?xml version="1.0" encoding="UTF-8"?> <project basedir=&qu ...
- java回调简单实现
package data; import java.util.HashMap; import java.util.Map; public class Good { CallBack callBack; ...
- 从服务端架构设计角度,深入理解大型APP架构升级
随着智能设备普及和移动互联网发展,移动端应用逐渐成为用户新入口,重要性越来越突出.但企业一般是先有PC端应用,再推APP,APP 1.0版的功能大多从现有PC应用平移过来,没有针对移动自身特点考虑AP ...
- flex 布局示例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 关于org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor的队列
今天查看源码发现spring的线程池是支持队列的: 并且队列支持的上限相当大: 当线程池的达到最大线程时,默认会把任务放在队列(内存)中,所以我们可以放心用这个东西来写日志了