linux C/C++ 日志打印函数
//宏定义日志文件名
#define PROCESSNAME "log_filename" //当日志文件大于5M时,会删除该文件,该接口使用方法 参照printf
void WriteLog(const char *fm, ...)
{
int buflen = ;
char buf[buflen];
int i = ;
memset(buf, , buflen);
va_list args;
va_start( args, fm );
vsnprintf(buf, buflen, fm,args);
va_end( args ); printf("%s\n", buf);
FILE* logfile=NULL;
char logpath[] = {};
snprintf(logpath,sizeof(logpath),"/var/log/");
if(access(logpath,)!=)
{
char cmdstr[] = {};
sprintf(cmdstr,"mkdir -p %s",logpath);
system(cmdstr);
} char fname[];
char longtime[];
time_t t;
memset(fname,,sizeof(fname));
time(&t);
struct tm local = {};
localtime_r(&t, &local);
sprintf(longtime,"%04d-%02d-%02d %02d:%02d:%02d", local.tm_year+,
local.tm_mon+, local.tm_mday, local.tm_hour, local.tm_min, local.tm_sec);
sprintf(fname,"%s/%s", logpath, PROCESSNAME);
for(i= ; i < ; i++)
{
logfile = fopen(fname, "ab");
if(logfile)
break;
sleep();
}
if(logfile)
{
// 判断文件大小
if (ftell(logfile) < **) // 5M
{
//日期时间
const char* pTemp = longtime;
fwrite(pTemp, , strlen(pTemp), logfile);
fwrite(" ", , , logfile);
//内容
fwrite(buf, , strlen(buf), logfile);
fwrite(" \r\n", , , logfile);
fclose(logfile);
}
else
{
fclose(logfile);
remove(fname);
}
}
}
linux C/C++ 日志打印函数的更多相关文章
- Android中logcat和日志打印
一.logcat对日志过滤 1.# logcat --help # logcat --help Usage: logcat [options] [filterspecs] options inclu ...
- Android Studio中JNI程序的单步调试和日志打印
近日有个算法(检测碰撞)需要用C++实现,目的是IOS和ANDROID中共享同一段程序. 下面说说android调用这段程序过程中遇到的一些事情.(过程中网上搜索了一些相关文章,大部分说的是eclip ...
- Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据
Title:Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据 --2013-10-11 11:57 #include <stdio.h> ...
- Objective-C与Swift下的自定义打印函数(Debug和Release)
1.Objective-C 在使用Objective-C进行开发的过程中,为了Debug会不断的设置打印函数.如下图是我们经常用的,用来测试监听方法的实现与否: NSLog(@"%s&quo ...
- Linux操作系统log日志日志分别指什么
Linux操作系统log日志日志分别指什么 2019-04-20 20:41:05 一.一般的日志 /var/log/messages —包括整体系统信息,其中也包含系统启动期间的日志.此外,m ...
- 小程序重新封装打印函数console.log
习惯性使用console.log打印获取到的数据,信息等,然后上星期大佬看见了说怎么那么多打印信息出来,线上那个也是吗?问我能不能线上的就不打印出来? 我就说那就封装一个打印函数呗. 重写一个没问题, ...
- nginx1.14.0日志打印
nginx日志打印 http属性log_format来设置日志格式 ,参考 https://www.jb51.net/article/52573.htm <nginx日志配置指令详解> ...
- Linux学习之日志管理(二十一)
Linux学习之日志管理 目录 日志管理 日志服务 rsyslogd的新特点 启动日志服务 常见日志的作用 日志文件的一般格式 rsyslogd日志服务 /etc/rsyslog.conf配置文件 服 ...
- linux下syslog-ng日志集中管理服务部署记录
syslog是Linux系统默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件.syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点 ...
随机推荐
- 阿里巴巴Java开发手册快速学习
Java作为一门名副其实的工业级语言,语法友好,学习简单,大规模的应用给代码质量的管控带来了困难,特别是团队开发中,开发过程中的规范会直接影响最终项目的稳定性. 善医者“未有形而除之”,提高工程健壮性 ...
- 学习H5一周随笔
H5学习也已经进行了一个周了,除了学习过程中的乱哄哄的脑子,对H5初学者(我)常见的问题有了如下见解. 1.初学者在建立新的Html文件之后,有时候会把 <meta charset=" ...
- Python 模块之 string.py
用法 字符串常量: import string print(string.ascii_lowercase) print(string.ascii_uppercase) print(string.asc ...
- 1965: [Ahoi2005]SHUFFLE 洗牌
1965: [Ahoi2005]SHUFFLE 洗牌 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 408 Solved: 240[Submit][St ...
- PTVS在Visual Studio中的安装
下载链接,点这里 PTVS是VS下的python开发插件 1.下载完成后,双击运行,安装完毕 2.解释脚本:打开VS,找到文件-新建-项目,在新建项目页面的左侧树形菜单的已安装->模板-> ...
- 使用htmlparse爬虫技术爬取电影网页的全部下载链接
昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...
- Web API框架学习——消息管道(二)
HttpServer的GlobalConfiguration中创建: GlobalConfiguration中确定了第一个HttpMessageHandler消息管道: 首:DefaultServer ...
- 享受release版本发布的好处的同时也应该警惕release可能给你引入一些莫名其妙的大bug
一般我们发布项目的时候通常都会采用release版本,因为release会在jit层面对我们的il代码进行了优化,比如在迭代和内存操作的性能提升方面,废话不多说, 我先用一个简单的“冒泡排序”体验下r ...
- 手把手教你做个AR涂涂乐
前段时间公司有一个AR涂涂乐的项目,虽然之前接触过AR也写过小Demo,但是没有完整开发过AR项目.不过经过1个多星期的学习,现在已经把项目相关的技术都学会了,在此向互联网上那些乐于分享的程序员前辈们 ...
- Python中的变量
多个变量赋值 Python允许你同时为多个变量赋值.例如: a = b = c = 1 以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上. 您也可以为多个对象指定多个变量.例如: ...