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

单位网站建设典型材料wordpress充值提现

单位网站建设典型材料,wordpress充值提现,自己做卖东西网站,网站访问量 wordpress文章目录 日志落地模块设计实现扩展实现测试 日志落地模块 设计 功能是#xff0c;将格式化完成后的日志消息字符串#xff0c;输出到指定的位置 支持将日志落地到不同的位置 标准输出指定文件滚动文件 滚动文件按照时间或者大小进行滚动切换#xff0c;可以按照天数对… 文章目录 日志落地模块设计实现扩展实现测试 日志落地模块 设计 功能是将格式化完成后的日志消息字符串输出到指定的位置 支持将日志落地到不同的位置 标准输出指定文件滚动文件 滚动文件按照时间或者大小进行滚动切换可以按照天数对日志信息进行管理 我们这里实现按照大小进行滚动文件的设计 同时也是支持落地方向的扩展可以写入到云服务器或者数据库中 用户可以自己编写一个新的日志落地模块进行实现因此需要设计一个简单工厂模式进行管理 实现思想是这样的 抽象出落地模块的基类派生出不同落地方向的子类使用工厂模式进行创建和表示的分离便于对象的扩展 实现 /*日志落地模块的实现1. 抽象落地基类2. 派生子类3. 使用工厂模式进行创建与表示的分离 */ #pragma once #include util.hpp #include memory #include fstream #include cassert #include sstreamnamespace Xulog {class LogSink{public:using ptr std::shared_ptrLogSink;LogSink() {}virtual ~LogSink() {}virtual void log(const char *data, size_t len) 0;};// 标准输出class StdoutSink : public LogSink{public:// 日志写入到标准输出void log(const char *data, size_t len){std::cout.write(data, len);}};// 指定文件class FileSink : public LogSink{public:// 传入文件名时构造并打开文件将操作句柄管理起来FileSink(const std::string pathname): _pathname(pathname){Util::File::createDirectory(Util::File::path(_pathname)); // 创建目录_ofs.open(_pathname, std::ios::binary | std::ios::app); // 打开文件assert(_ofs.is_open());}void log(const char *data, size_t len){_ofs.write(data, len);assert(_ofs.good());}private:std::string _pathname;std::ofstream _ofs;};// 滚动文件大小class RollSinkBySize : public LogSink{public:RollSinkBySize(const std::string basename, size_t max_size): _basename(basename), _max_fsize(max_size), _current_fsize(0), _cnt(0){std::string pathname creatNewFIle();Util::File::createDirectory(Util::File::path(pathname)); // 创建目录_ofs.open(pathname, std::ios::binary | std::ios::app);assert(_ofs.is_open());}void log(const char *data, size_t len){if (_current_fsize _max_fsize){std::string pathname creatNewFIle();_ofs.close(); // 关闭原来已经打开的文件_ofs.open(pathname, std::ios::binary | std::ios::app);assert(_ofs.is_open());_current_fsize 0;// _cnt 0;}_ofs.write(data, len);assert(_ofs.good());_current_fsize len;}private:std::string creatNewFIle() // 大小判断超过则创建新文件{// 获取系统时间构造文件扩展名time_t t Util::Date::getTime();struct tm lt;localtime_r(t, lt);std::stringstream filename;filename _basename lt.tm_year 1900 lt.tm_mon 1 lt.tm_mday lt.tm_hour lt.tm_min lt.tm_sec - _cnt .log;return filename.str();}private:std::string _basename; // 基础文件名 (扩展文件名-时间|计数器)std::ofstream _ofs;size_t _max_fsize; // 大小上限size_t _current_fsize; // 当前大小size_t _cnt; // 日志数量};// 简单工厂模式class SinkFactory{public:template typename SinkType, typename... Argsstatic LogSink::ptr create(Args ...args){return std::make_sharedSinkType(std::forwardArgs(args)...);}}; }扩展实现 // 扩展测试 滚动文件时间 // 1. 以时间段滚动 // 2. time(nullptr)%gap; enum class TimeGap {GAP_SECOND,GAP_MINUTE,GAP_HOUR,GAP_DAY }; class RollSinkByTime : public Xulog::LogSink { public:// 传入文件名时构造并打开文件将操作句柄管理起来RollSinkByTime(const std::string basename, TimeGap gap_type): _basename(basename){switch (gap_type){case TimeGap::GAP_SECOND:_gap_size 1;break;case TimeGap::GAP_MINUTE:_gap_size 60;break;case TimeGap::GAP_HOUR:_gap_size 3600;break;case TimeGap::GAP_DAY:_gap_size 3600 * 24;break;}_current_gap _gap_size 1 ? Xulog::Util::Date::getTime() : (Xulog::Util::Date::getTime() % _gap_size);std::string filename createNewFile();Xulog::Util::File::createDirectory(Xulog::Util::File::path(filename)); // 创建目录_ofs.open(filename, std::ios::binary | std::ios::app);assert(_ofs.is_open());}void log(const char *data, size_t len){time_t current Xulog::Util::Date::getTime();if (current % _gap_size ! _current_gap){std::string filename createNewFile();_ofs.close();_ofs.open(filename, std::ios::binary | std::ios::app);assert(_ofs.is_open());}_ofs.write(data, len);assert(_ofs.good());}private:std::string createNewFile(){time_t t Xulog::Util::Date::getTime();struct tm lt;localtime_r(t, lt);std::stringstream filename;filename _basename lt.tm_year 1900 lt.tm_mon 1 lt.tm_mday lt.tm_hour lt.tm_min lt.tm_sec .log;return filename.str();}private:std::string _basename;std::ofstream _ofs;size_t _current_gap; // 当前时间段的个数size_t _gap_size; // 间隔大小 };测试 Xulog::LogMsg msg(Xulog::LogLevel::value::ERROR, 124, main.cc, root, 格式化功能测试);Xulog::Formatter fmt1;std::string str1 fmt1.Format(msg);// 测试原生日志落地模块Xulog::LogSink::ptr std_lsp Xulog::SinkFactory::createXulog::StdoutSink();Xulog::LogSink::ptr file_lsp Xulog::SinkFactory::createXulog::FileSink(./log/test.log);Xulog::LogSink::ptr roll_lsp Xulog::SinkFactory::createXulog::RollSinkBySize(./log/roll-, 1024 * 1024); // 每个文件1MBXulog::LogSink::ptr time_lsp Xulog::SinkFactory::createRollSinkByTime(./log/roll-, TimeGap::GAP_SECOND); // 每个文件1sstd_lsp-log(str1.c_str(), str1.size());file_lsp-log(str1.c_str(), str1.size());size_t size 0;size_t cnt 0;while (size 1024 * 1024 * 100) // 100 个{std::string tmp std::to_string(cnt);tmp str1;roll_lsp-log(tmp.c_str(), tmp.size());size tmp.size();}time_t t Xulog::Util::Date::getTime();while (Xulog::Util::Date::getTime() t 3){time_lsp-log(str1.c_str(), str1.size());}
http://www.hkea.cn/news/14550843/

相关文章:

  • 网站建设商城扬州工程建设信息网站
  • 惠州行业网站设计方案百度seo推广首选帝搜软件
  • 做站长工具网站免费的app软件下载安装
  • 通辽做网站有没有做网站放到百度上需要什么
  • 做网站备案不少天wordpress wp head
  • 录音转文字网站开发重庆营销型网站开发
  • 台州网络建站模板管理系统是网站吗
  • 网站开发包括几个部分南京公司建设网站
  • 寿光网站建设推广互联网现在的发展趋势
  • 深圳住房和建设局网站全景看房福田网站 建设seo信科
  • 企业网站搜索优化外包手机网页禁止访问怎么解决
  • 苏州住房和城乡建设局网站制作网页一般用什么来设计分割页面
  • 厦门首屈一指的网站建设公司wordpress主题演示数据库
  • 网站被墙的原因超级装家装官网
  • 常州建网站网站开发服务费算无形资产吗
  • 网站建设的用户体验建设网站以什么为导向
  • 阿里巴巴做国际网站多少钱手表网站 欧米茄
  • 网站主题定位临海做网站
  • 部队网站源码广州微网站建设
  • google移动网站建站十大原则两台wordpress共享mysql
  • 中国建设工程招标网站化妆培训网站模板
  • 招生平台网站开发vs能建设网站吗
  • 怎么优化网站的单个关键词排名服装设计官网
  • 网站建设要做什么会计科目南宁网站建公司电话号码
  • 一个人做网站现实吗图标设计免费logo
  • 网站在建设中页面网站搭建培训学校
  • 郑州做网站公司电话优化网站公司外包
  • 企业综合查询网站品牌营销策划服务
  • 好看简单易做的网站yw193can未满十免费观看
  • 纪检网站建设方案常德市建设局网站