当前位置: 首页 > news >正文

网站建设 正邦wordpress dopt

网站建设 正邦,wordpress dopt,河南安阳市地图,做高大上分析的网站目录 一.日志 二.实现任意个数元素求和 三.编写一个日志函数 1.设置日志等级 2.设置日志时间 3.设置日志的打印格式 4.将日志的内容输出到文件 一.日志 日志等级#xff0c;日志时间#xff0c;日志内容#xff0c;文件的名称和行号 日志等级…目录 一.日志 二.实现任意个数元素求和         三.编写一个日志函数 1.设置日志等级         2.设置日志时间 3.设置日志的打印格式 4.将日志的内容输出到文件              一.日志 日志等级日志时间日志内容文件的名称和行号 日志等级 Info常规消息 Warning报警消息 Error错误可能需要立即处理 Fatal致命的 Debug调试 二.实现任意个数元素求和         使用可变参数要使用若干个宏定义这些宏定义在         //使用可变参数时一定要有一个具体的参数 int Sum(int n, ...) {//用来提取可变参数的一个个参数其实本质上就是一个char*类型的指针变量va_list s;//只向可变参数的首地址内部封装了s n 1;va_start(s, n);//实现求和int sum 0;while(n){//根据类型提取参数va_arg(s, int);n--;}//s NULL;va_end(s);return sum; } 主函数调用       此时我们传入的可变参数都是相同的类型的如果传入不同的类型的话就要像printf一样做获取的字符串处理。  三.编写一个日志函数 1.设置日志等级         #define Info 0 #define DeBug 1 #define Warning 2 #define Error 3 #define Fatal 4//实现日志函数 void logmessage(int level, char* formatr, ...) {}2.设置日志时间 a.Linux中获取时间戳的函数                      b.Linux中转换时间戳的函数 会将得到的时间戳转换为以下形式               因为年和月都是从0开始计的所以在打印的时候需要加1900和1。 void logmessage(int level, char* formatr, ...) {//获取时间戳time_t t 0;time(t);//转换时间戳struct tm* ctime NULL;ctime localtime(t);//打印获取到的时间printf(%d-%d-%d %d:%d:%d\n, ctime-tm_year 1900, ctime-tm_mon 1, ctime-tm_mday, ctime-tm_hour, ctime-tm_min, ctime-tm_sec);} 3.设置日志的打印格式 默认部分 自定义部分 #define Info 0 #define DeBug 1 #define Warning 2 #define Error 3 #define Fatal 4 #define Log_buffer_SIZE 1024string levelToString(int level) {switch(level){case Info : return Info ;case DeBug : return DeBug ;case Warning : return Warning ;case Error : return Error ;case Fatal : return Fatal ;default:return None;} }//实现日志函数 void logmessage(int level, char* format, ...) {//获取日志的等级string level_str;level_str levelToString(level);//获取时间戳time_t t 0;time(t);//转换时间戳struct tm* ctime NULL;ctime localtime(t);// //打印获取到的时间// printf(%d-%d-%d %d:%d:%d\n// , ctime-tm_year 1900, ctime-tm_mon 1, ctime-tm_mday// , ctime-tm_hour, ctime-tm_min, ctime-tm_sec);//整合日志的默认部分char leftbuffer[Log_buffer_SIZE];snprintf(leftbuffer, sizeof(leftbuffer), [%s][%d-%d-%d %d:%d:%d] : ,level_str.c_str(), ctime-tm_year 1900, ctime-tm_mon 1, ctime-tm_mday, ctime-tm_hour, ctime-tm_min, ctime-tm_sec);//整合自定义部分va_list s;va_start(s, format);char rightbuffer[Log_buffer_SIZE];vsnprintf(rightbuffer, sizeof(rightbuffer), format, s);va_end(s);//整合默认部分和自定义部分char logtxt[Log_buffer_SIZE * 2];snprintf(logtxt, sizeof(logtxt), %s%s\n, leftbuffer, rightbuffer);printf(%s, logtxt); } 4.将日志的内容输出到文件              #include time.h #include string #include stdio.h #include stdarg.h #include iostream #include cstdio #include cerrno #include cstring #include fcntl.h #include unistd.h #include unistd.h #include sys/stat.h #include sys/types.husing namespace std;#define Info 0 #define DeBug 1 #define Warning 2 #define Error 3 #define Fatal 4 #define Log_buffer_SIZE 1024string levelToString(int level) {switch (level){case Info:return Info;case DeBug:return DeBug;case Warning:return Warning;case Error:return Error;case Fatal:return Fatal;default:return None;} }#define Screen 1 #define Onefile 2 #define Classfile 3#define LogFile log.txt// 实现日志函数 class Log { public:Log(){printMethod Screen;path ./Log/;}void Enable(int method){printMethod method;}void printLog(int level, const string logtxt){switch (printMethod){case Screen:cout logtxt.c_str() endl;break;case Onefile:printOneFile(LogFile, logtxt);break;case Classfile:printClassFile(level, logtxt);break;default:break;}}void printOneFile(const string logname, const string logtxt){string _logname path;_logname logname;int fd open(_logname.c_str(), O_WRONLY | O_CREAT | O_APPEND, 0666); // log.txtif (fd 0)return;write(fd, logtxt.c_str(), logtxt.size());close(fd);}void printClassFile(int level, const string logtxt){string filename LogFile;filename .;filename levelToString(level); // log.txt.Debug/Warning/FatalprintOneFile(filename, logtxt);}~Log(){}//处理日志等级string levelToString(int level){switch (level){case Info:return Info;case DeBug:return DeBug;case Warning:return Warning;case Error:return Error;case Fatal:return Fatal;default:return None;}}//实现日志方法void operator()(int level, char *format, ...){// 获取日志的等级string level_str;level_str levelToString(level);// 获取时间戳time_t t 0;time(t);// 转换时间戳struct tm *ctime NULL;ctime localtime(t);// 整合日志的默认部分char leftbuffer[Log_buffer_SIZE];snprintf(leftbuffer, sizeof(leftbuffer), [%s][%d-%d-%d %d:%d:%d] : , level_str.c_str(), ctime-tm_year 1900, ctime-tm_mon 1, ctime-tm_mday, ctime-tm_hour, ctime-tm_min, ctime-tm_sec);// 整合自定义部分va_list s;va_start(s, format);char rightbuffer[Log_buffer_SIZE];vsnprintf(rightbuffer, sizeof(rightbuffer), format, s);va_end(s);// 整合默认部分和自定义部分char logtxt[Log_buffer_SIZE * 2];snprintf(logtxt, sizeof(logtxt), %s%s\n, leftbuffer, rightbuffer);// printf(%s, logtxt);printLog(level, logtxt);}private:int printMethod;string path; };
http://www.zqtcl.cn/news/554715/

相关文章:

  • 自己做网站成本推广代理平台
  • wamp搭建多个网站网站设计方面有什么公司
  • 九江集团网站建设app广告对接平台
  • 个人网页网站制作模板搜索引擎营销经典案例
  • 北京自助建站系统思茅区建设局网站
  • 国外被动收入网站做的好的成都网站建设 川icp备
  • 网站的微信推广怎么做php在电子商务网站建设中的应用研究 戴书浩
  • 中山做网站有什么做logo网站
  • 建设网站要什么手续义乌简游网络科技有限公司
  • 深圳做企业网站的音乐网站设计
  • 互联网网站如何做菜鸟教程自学网
  • 网站模板上传工具网站报名照片怎么做
  • 做网站如何备案东城做企业网站多少钱
  • 建设手机网站的目的广告制作行业发展前景
  • 手工艺品网站建设目的长春有哪些网络设计公司
  • 重庆建设工程招标网站淮南58同城网
  • 有域名在本机上做网站psd素材
  • 做拍拍拍拍网站网站宣传的劣势
  • 建设银行官方网站诚聘英才亚马逊店铺出售网站
  • 佛山房地产网站建设万网域名查询接口
  • 新建的网站必须要备案吗优购物网
  • 陕西省住房和城乡建设厅官方网站智能网站建设制作
  • 英语故事网站建设镇江大港信息港
  • 接单做一个网站多少钱商河网站建设
  • 网站建设s南昌网站建设服务
  • 免费的素材网站有哪些重庆网页设计公司排名
  • 内网网站建设汇报即商通网站建设推广
  • 企业建站系统是什么学校的网站怎么做的
  • 哪个大学的网站做的最好看网页制作教材素材
  • 南里商濮阳网站建设福田附件网站建设公司