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

商务网站建设体会广州网络科技有限公司有哪些

商务网站建设体会,广州网络科技有限公司有哪些,网站建设方案及,odoo 网站建设原文链接#xff1a; 工具库1#xff1a;封装一个日志库#xff08;linux)-CSDN博客 一、#xff0c;需求 #xff08;1#xff09;封装一个c/c日志库#xff0c;提供格式打印接口#xff0c;编写程序代码时方便使用#xff1b; #xff08;2#xff09; 格式打印…原文链接 工具库1封装一个日志库linux)-CSDN博客 一、需求 1封装一个c/c日志库提供格式打印接口编写程序代码时方便使用 2 格式打印接口支持可变参数 3格式打印接口封装成可变参数宏便于使用 二实现 1提供格式打印接口 2日志等级分成三个级别分别是错误、警告、普通信息 3支持输出到终端同时支持输出到指定日志文件 4格式打印接口支持可变参数 5打印字符串长度无限制 三源码 1messages.h   /** ***************************************************************************** * Copyright (C), 2023-2024 * * file messages.h * brief printf pretty * * * author sbinhuang * date 2023-06-28 * version v1.0.0 20230628 *---------------------------------------------------------------------------- * note 历史版本 修改人员 修改日期 修改内容 * note v1.0 sbinhuang 2023-06-28 1.创建 * ***************************************************************************** */ #ifndef _SELF_UTILITY_MESSAGES_H_ #define _SELF_UTILITY_MESSAGES_H_ #include iostream #include fstreamnamespace SelfUtility { // message type enum MessageType {NONE 0,ERROR 1,WARN 2,INFO 3 };class Messages {public:// default close file and enable terminal outputstatic bool Init();// open log file// mode true, open or create file and clear file content// mode false, open or create file, doesnt clear file contentstatic bool OpenLogFile(const char *file_name, bool mode 0);// close log filestatic bool CloseLogFile();// enable terminal outputstatic bool EnableTerminalOutput();// disable terminal outputstatic bool DisableTerminalOutput();// print message for variable argumentstatic bool Message(const MessageType type, const char *file_name,int line_number, const char *format, ...);// print message for determine argumentstatic bool Message(const MessageType type, const char *file_name,int line_number, const char *format);private:static std::ofstream _os;static bool _terminal_output;static bool _write_file; };} // namespace SelfUtility#define LOG_ERROR(format, ...) do { \SelfUtility::Messages::Message(SelfUtility::MessageType::ERROR, \__FILE__, __LINE__, format, __VA_ARGS__); \ } while (0)#define LOG_WARN(format, ...) do { \SelfUtility::Messages::Message(SelfUtility::MessageType::WARN, \__FILE__, __LINE__, format, __VA_ARGS__); \ } while (0)#define LOG_INFO(format, ...) do { \SelfUtility::Messages::Message(SelfUtility::MessageType::INFO, \__FILE__, __LINE__, format, __VA_ARGS__); \ } while (0)#define LOG_PRINT(format, ...) do { \SelfUtility::Messages::Message(SelfUtility::MessageType::NONE, \__FILE__, __LINE__, format, __VA_ARGS__); \ } while (0)#define LOG_INIT() do { \SelfUtility::Messages::Init(); \ } while (0)#endif // _SELF_UTILITY_MESSAGES_H_ (2) messages.cpp /** ***************************************************************************** * Copyright (C), 2023-2024 * * file messages.cpp * brief printf pretty * * * author sbinhuang * date 2023-06-28 * version v1.0.0 20230628 *---------------------------------------------------------------------------- * note 历史版本 修改人员 修改日期 修改内容 * note v1.0 sbinhuang 2023-06-28 1.创建 * ***************************************************************************** */ #include messages.h #include stdio.h #include stdlib.h #include stdarg.h #include iostream #include fstream #include stringusing SelfUtility::MessageType; using SelfUtility::Messages;// static variable define for class Messages std::ofstream Messages::_os; bool Messages::_write_file; bool Messages::_terminal_output;// initial log print, default output terminal bool Messages::Init() {if (_os.is_open()) _os.close();_terminal_output true;_write_file false;return true; }// Open log file // mode true, open or create file and clear file content // mode false, open or create file, doesnt clear file content bool Messages::OpenLogFile(const char *file_name, bool mode) {if (!file_name) {std::cout Log file name is null pointer! std::endl;return false;}// open fileif (true mode) {_os.open(file_name, std::ios::out);} else {_os.open(file_name, std::ios::app);}if (!_os.is_open()) {std::cout File open failed! ( file_name ) std::endl;return false;}_write_file true;return true; }// close log file bool Messages::CloseLogFile() {if (_os.is_open()) _os.close();_write_file false;return true; }// enable terminal output bool Messages::EnableTerminalOutput() {_terminal_output true;return true; }// disable terminal output bool Messages::DisableTerminalOutput() {_terminal_output false;return true; }// print message for variable argument bool Messages::Message(const MessageType type, const char *file_name,int line_number, const char *format, ...) {// print titleif (MessageType::ERROR type) {if (true _terminal_output) {if (file_name) {std::cout [ file_name : line_number ];}std::cout ERROR: ;}if (true _write_file) {if (file_name) {_os [ file_name : line_number ];}_os ERROR: ;}} else if (MessageType::WARN type) {if (true _terminal_output) {if (file_name) {std::cout [ file_name : line_number ];}std::cout WARN: ;}if (true _write_file) {if (file_name) {_os [ file_name : line_number ];}_os WARN: ;}} else if (MessageType::INFO type) {if (true _terminal_output) std::cout INFO: ;if (true _write_file) std::cout INFO: ;}// print messagechar *buf NULL;va_list arg_ptr;va_start(arg_ptr, format);vasprintf(buf, format, arg_ptr);va_end(arg_ptr);if (true _terminal_output) {std::cout buf;}if (true _write_file) {_os buf;}free(buf);buf NULL;return true; }// print message for determine argument bool Messages::Message(const MessageType type, const char *file_name,int line_number, const char *format) {// print titleif (MessageType::ERROR type) {if (true _terminal_output) {if (file_name) {std::cout [ file_name : line_number ];}std::cout ERROR: ;}if (true _write_file) {if (file_name) {_os [ file_name : line_number ];}_os ERROR: ;}} else if (MessageType::WARN type) {if (true _terminal_output) {if (file_name) {std::cout [ file_name : line_number ];}std::cout WARN: ;}if (true _write_file) {if (file_name) {_os [ file_name : line_number ];}_os WARN: ;}} else if (MessageType::INFO type) {if (true _terminal_output) std::cout INFO: ;if (true _write_file) std::cout INFO: ;}// print messageif (true _terminal_output) std::cout format;if (true _write_file) _os format;return true; }
http://www.zqtcl.cn/news/433684/

相关文章:

  • 唐山公司建设网站十大牌子网
  • 网站开发的选题依据电子商务网站建设内容
  • 中企动力做的网站被百度屏蔽推销网站话术
  • 四川网站制作广告设计自学网教程
  • 做个简单的企业小网站单纯做网站的公司
  • 河北省建设厅官方网站哈尔滨建设工程招聘信息网站
  • 茂名网站制作网页个人博客登录首页
  • 类似qq空间的网站wordpress 简历主题
  • 专业网站运营制作怎么写代码做网站
  • 安徽免费网站制作西安做行业平台网站的公司
  • 我想做服装网站怎么做网页设计优秀案例分析
  • 网站建设技术教程视频wordpress中文模版
  • 高端企业网站 程序纸牌网站建设
  • html制作网站推广最有效的办法
  • 做网站推广的工作内容凡客诚品创始人
  • 网站开发pc端和手机端外贸建设网站公司
  • 长沙哪家网站设计好上海成品网站
  • wordpress商城插件收费哪里可以做网站优化
  • 中国建设银行u盾下载假网站吗wordpress有没有付费
  • 海南哪家公司做网站开发一套管理系统多少钱
  • 做网站建设费用百姓网
  • 西安建设厅网站wpf做网站教程
  • 好的网页网站设计wordpress对外发邮件
  • 湖北网站建设贴吧信用宁波企业网查询
  • 佛山市官网网站建设多少钱网站建设与管理书籍
  • 网站建设佰金手指科杰二八佛山有那几家做网站
  • 网站建设刂搜金手指下拉贰伍wordpress 外链自动nofflow
  • 搭建一个网站多少钱手机软件开发用什么语言
  • 太原专业网站建设杭州网络推广专员
  • 广西专业建网站橙米网站建设