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

苏州网站公司查网站是否备案

苏州网站公司,查网站是否备案,公司的宣传网站应该怎么做,怎么用joomla做网站spdlog 以下是从原理到代码实现的全方位spdlog技术调研结果,结合核心架构、优化策略和完整代码示例: 一、核心架构设计原理 spdlog三级架构 (图示说明:spdlog采用三级结构实现日志系统解耦) Registry管理中枢 全局…

spdlog

以下是从原理到代码实现的全方位spdlog技术调研结果,结合核心架构、优化策略和完整代码示例:

一、核心架构设计原理

spdlog三级架构 (图示说明:spdlog采用三级结构实现日志系统解耦)

  • Registry管理中枢

全局单例管理所有logger对象
提供日志级别全局阈值设置
实现日志对象检索和生命周期管理

  • Logger处理器
class logger {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输出终端
    支持6种输出类型(文件/控制台/系统日志等),通过组合模式实现多路输出

二、异步模式工作原理

异步模式流程图 (异步模式采用生产者-消费者模型实现)

  • 环形队列结构
template<typename T>
class circular_q {std::mutex queue_mutex_;std::vector<T> q_;size_t max_items_;// 支持三种溢出策略:// 1. 阻塞写入 2. 丢弃新日志 3. 覆盖旧日志
}
  • 线程池配置参数
spdlog::init_thread_pool(8192, // 队列容量(建议设置为2的幂次)2     // 后台线程数(根据CPU核心数调整)
);

三、关键优化参数配置

  • 性能优化矩阵表
参数类型推荐值作用域性能影响
异步队列大小8192-32768全局+++
刷新间隔std::chrono::seconds(3)单个logger++
文件缓冲区64KB文件sink+
日志等级阈值warn全局/logger+++
  • 代码配置示例
// 创建异步日志器
auto async_file = spdlog::basic_logger_mt<spdlog::async_factory>("async_log", "logs/async.log", spdlog::file_event_handlers{.before_open = [](const auto& filename) { /* 预创建文件 */ },.after_open = [](auto file) { file->set_buffer_size(65536); }}
);// 设置优化参数
async_file->set_level(spdlog::level::warn);          // 日志级别过滤
async_file->flush_on(spdlog::level::err);            // 错误立即刷新
async_file->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%l%$] %v"); 
spdlog::flush_every(std::chrono::seconds(3));       // 定时刷新

四、完整实现代码示例

#include <spdlog/spdlog.h>
#include <spdlog/async.h>
#include <spdlog/sinks/rotating_file_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>// 复合型日志器配置
void setup_logger() {// 1. 初始化线程池spdlog::init_thread_pool(32768, 2); // 2. 创建多个sinkauto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();auto file_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>("logs/app.log",  1024*1024*5, 3);// 3. 组合sink创建异步loggerstd::vector<spdlog::sink_ptr> sinks{console_sink, file_sink};auto logger = std::make_shared<spdlog::async_logger>("multi_sink", sinks.begin(),  sinks.end(), spdlog::thread_pool(),spdlog::async_overflow_policy::block);// 4. 配置高级参数logger->set_level(spdlog::level::debug);logger->set_error_handler([](const std::string& msg) {std::cerr << "Logger error: " << msg << std::endl;});// 5. 注册全局日志器spdlog::register_logger(logger);spdlog::set_default_logger(logger);
}// 使用示例
int main() {setup_logger();SPDLOG_DEBUG("Debug message");   // 低于warn级别被过滤SPDLOG_WARN("Important warning");spdlog::drop_all();  // 确保所有日志刷新
}

五、性能对比测试数据

  • 在不同硬件环境下的基准测试结果(单位:百万条/秒):
模式单线程4线程优化建议
同步文件模式0.80.5避免高频小文件写入
异步内存模式3.212.7增大队列容量
异步SSD模式2.18.9启用文件预分配

六、最佳实践建议

  • 高频日志场景:启用SPDLOG_NO_ATOMIC_LEVELS编译选项提升10-15%性能
  • 稳定性要求高的系统:设置overflow_policy::block防止日志丢失
  • 分布式系统:通过udp_sink实现日志集中管理

完整代码

Github

作者郑天佐
邮箱zhengtianzuo06@163.com
主页http://www.zhengtianzuo.com
githubhttps://github.com/zhengtianzuo
http://www.dtcms.com/wzjs/826686.html

相关文章:

  • 建设动漫网站的目的ei网站怎么兼做
  • 宁波企业网站设计网站后台用esayui做
  • thinkphp手机网站开发宠物店网站建设方案
  • vr全景网站怎么做wordpress网络
  • 东莞住房和城乡建设厅网站wordpress分页无效
  • 有哪些免费网站可以发布广告网站建设 艺麟盛世
  • 做网站是什么软件wordpress网站地图插件
  • 网站建设中啥意思没有充值入口的传奇游戏
  • 网站建设前期准备方案wordpress 整站采集
  • 的网站建设公司那个好合肥网络推广培训
  • asp.net做网站Dreamver学校网站的建设费用
  • 做网站最便宜多少钱百度北京总部电话
  • 网站每天做多少外链合适专业的网站建设公司排名
  • 广告网站模板下载 迅雷下载安装百度建立自己的网站
  • 网站建设中出现的问问题天猫网站是怎么做seo优化的
  • 网站建设和优普通网站一年要多少钱
  • 网站建设首选原创先锋wordpress标题加密
  • 做教师章节试题哪个网站郑州建站费用
  • 余姚企业网站建设兰州互联网公司有哪些
  • 巴州建设局网站淮北市官网
  • 静态网站开发预期效果模板网站建站哪家好
  • 廊坊网站的优化百度网盘搜索引擎
  • 免费门户网站制作如何检测wordpress后台慢的原因
  • 请问番禺哪里有做网站的企业网站模板 下载 论坛
  • 建网站图片怎么找网站建设费的摊销
  • 万网 网站空间涂料网站模板
  • 怀化三中网站北京旅游网页设计
  • 商城网站建设code521网站查询系统怎么做
  • 宣城市建设监督管理局网站下载wordpress设置首页title
  • 淘宝电子网站建设论文高端人才招聘网站排名