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

建立自己的网站怎么样做广西网站seo

建立自己的网站怎么样做,广西网站seo,wordpress论坛程序,上海网络推广公司排名根据Spdlog源码分析及技术文档,其日志器(logger)的创建方法可分为以下核心类型: %% %% 一、工厂函数直接创建 通过内置工厂模板函数快速生成预配置的日志器,适用于常见场景: 控制台日志器 // 多线程彩…

根据Spdlog源码分析及技术文档,其日志器(logger)的创建方法可分为以下核心类型:


%%
在这里插入图片描述
%%

一、工厂函数直接创建

通过内置工厂模板函数快速生成预配置的日志器,适用于常见场景:

  1. 控制台日志器
// 多线程彩色控制台输出(_mt表示多线程安全)
auto console = spdlog::stdout_color_mt("console_logger");
// 错误输出专用
auto stderr_logger = spdlog::stderr_color_mt("error_logger");
  • 此类日志器支持ANSI颜色编码,输出级别可通过set_level()动态调整。
  1. 基础文件日志器
// 单文件持续写入(无滚动策略)
auto file_logger = spdlog::basic_logger_mt("file_logger", "logs/app.log");
  • 需注意长时间运行可能导致文件过大。
  1. 滚动文件日志器
// 文件大小超过5MB后滚动(保留3个历史文件)
auto rotating_logger = spdlog::rotating_logger_mt("rot_logger", "logs/rot.log", 5 * 1024 * 1024, 3);
  • 采用先进先出策略管理历史文件。
  1. 每日文件日志器
// 每天0点创建新文件,保留7天日志
auto daily_logger = spdlog::daily_logger_mt("daily_logger", "logs/daily.log", 0, 0, false, 7);    
  • 第五参数truncate控制是否覆盖已有文件。

二、手动组合创建

通过直接构造spdlog::logger对象实现高度定制化:

// 1. 创建Sink集合
std::vector<spdlog::sink_ptr> sinks;
sinks.push_back(std::make_shared<spdlog::sinks::stdout_color_sink_mt>()); // 控制台
sinks.push_back(std::make_shared<spdlog::sinks::daily_file_sink_mt>("logs/combo.log", 23, 59)); // 每日文件// 2. 构造日志器对象
auto custom_logger = std::make_shared<spdlog::logger>("custom", sinks.begin(), sinks.end());// 3. 注册全局访问(可选)
spdlog::register_logger(custom_logger);

此方式支持多Sink组合输出,如同时写入控制台、文件、网络等。


三、异步日志器创建

采用生产者-消费者模型提升性能:

// 初始化线程池(队列容量8192,2个工作线程)
spdlog::init_thread_pool(8192, 2);// 创建异步日志器
auto async_logger = spdlog::basic_logger_mt<spdlog::async_factory>("async_logger", "logs/async.log");

特点包括:
• 支持阻塞/丢弃/覆盖三种队列溢出策略
• 通过flush_every(sec)设置定时刷新间隔
• 吞吐量可达同步模式的4倍以上


四、高级配置方法

  1. 全局注册与访问
// 注册日志器
spdlog::register_logger(my_logger);// 全局获取
auto logger = spdlog::get("logger_name");
  • 需注意频繁调用spdlog::get()可能影响性能。
  1. 共享Sink复用
auto shared_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("shared.log");
auto logger1 = std::make_shared<spdlog::logger>("logger1", shared_sink);
auto logger2 = std::make_shared<spdlog::logger>("logger2", shared_sink);
  • 多个日志器共享同一Sink时需确保线程安全。

五、源码设计解析

  1. 工厂模式实现
    • 通过模板工厂类(如synchronous_factory)解耦日志器与Sink的创建过程,支持扩展自定义Sink类型。
  2. 日志器核心结构
class logger {
private:std::string name_;std::vector<sink_ptr> sinks_;level::level_enum level_;// 日志处理逻辑void log(log_msg& msg) {if (should_log(msg.level)) {for (auto& sink : sinks_) sink->log(msg);}}
};
  • 采用组合模式管理Sink,支持多路分发。

最佳实践建议

  1. 高频日志场景启用SPDLOG_NO_ATOMIC_LEVELS编译选项提升性能
  2. 分布式系统建议采用udp_sink实现集中式日志管理
  3. 文件类日志器需设置合理的缓冲区大小(如64KB)减少IO操作

完整代码示例及性能优化参数可参考官方文档。

http://www.dtcms.com/wzjs/53425.html

相关文章:

  • 网站内的地图导航怎么做如何宣传网站
  • 有源码怎么搭建网站常州百度推广代理公司
  • 圣诞网站怎么做深圳最新疫情
  • ps怎么做网站页面seo优化是什么意思
  • 网站创建流程包括哪些步骤最新做做网站
  • 常见的简单的网站制作中国人民银行网站
  • 替别人做设计的网站seo推广软件代理
  • 制作一个有用户网站网站目录
  • 网站推广新手入门教程建站网站
  • 网站定制开发收费标准是多少百度电脑版
  • 深圳建设网站跨境电商seo什么意思
  • 技术支持 网站建设产品关键词怎么找
  • 用软件什么做网站杭州网站设计公司
  • 电子专业毕设做网站网络推广吧
  • 怎么做垂直网站线上如何推广自己的产品
  • 2018年网站建设工作总结接app推广
  • 汕头 做网站如何自己做一个网页
  • 广东网站建设价格搜索引擎都有哪些
  • 在自己网站做支付可以吗站长工具站长
  • 如何搭建网站慈溪seo
  • 婚庆公司网站建设策划书.doc南京百度
  • 网站建设 ui 企业网站天津网站建设优化
  • 提供网站建设服务的网站价格淘宝代运营1个月多少钱
  • 网站淘宝客一般怎么做友情链接论坛
  • 网站内容不被收录seo培训一对一
  • 苏州公司名称查询上海seo顾问推推蛙
  • 汨罗哪里有网站开发的公司电话关键词优化排名软件
  • 网站后台验证码不正确广告模板
  • 扬中营销网站建设百度站内搜索代码
  • 建设高校实验教学网站的作用企业关键词优化最新报价