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

建设部网站电话WordPress 软件 模板

建设部网站电话,WordPress 软件 模板,网站建设的宗旨,wordpress cms怎么登陆目录 1. 准备工作#xff1a;安装 spdlog 方法一#xff1a;使用 CMake 的 FetchContent#xff08;推荐#xff09; 方法二#xff1a;手动下载并添加到项目中 2. 在 Qt 项目中集成 spdlog a. 初始化 spdlog b. 在 Qt 的各个部分使用 spdlog 3. 基本使用示例 4. …目录 1. 准备工作安装 spdlog 方法一使用 CMake 的 FetchContent推荐 方法二手动下载并添加到项目中 2. 在 Qt 项目中集成 spdlog a. 初始化 spdlog b. 在 Qt 的各个部分使用 spdlog 3. 基本使用示例 4. 高级配置多种输出目标和格式化 a. 多种 Sink b. 自定义格式化 5. 异步日志记录 6. 在 Qt 中处理线程安全 7. 常见问题与解决方案 问题1日志文件没有生成或写入 问题2日志级别不正确 问题3异步日志丢失日志消息 1. 准备工作安装 spdlog 首先我们需要将 spdlog 添加到你的 Qt 项目中。spdlog 是一个头文件库你可以通过以下几种方式来获取它 方法一使用 CMake 的 FetchContent推荐 如果你的 Qt 项目使用 CMake 构建这是最简单的方法。 # 在你的 CMakeLists.txt 文件中添加以下内容cmake_minimum_required(VERSION 3.14) project(MyQtApp)set(CMAKE_CXX_STANDARD 17)# 引入 Qt find_package(Qt5 COMPONENTS Widgets REQUIRED)# 使用 FetchContent 下载 spdlog include(FetchContent) FetchContent_Declare(spdlogGIT_REPOSITORY https://github.com/gabime/spdlog.gitGIT_TAG v1.11.0 # 选择一个稳定的版本 ) FetchContent_MakeAvailable(spdlog)# 添加可执行文件 add_executable(MyQtApp main.cpp mainwindow.cpp mainwindow.h mainwindow.ui)# 链接 Qt 和 spdlog target_link_libraries(MyQtApp PRIVATE Qt5::Widgets spdlog::spdlog)方法二手动下载并添加到项目中 前往 spdlog 的 GitHub 仓库。下载最新的 release 版本ZIP 文件。将 spdlog/include 文件夹复制到你的项目目录中例如放在 external/spdlog。在你的 CMakeLists.txt 中添加如下内容 # 添加 spdlog 的包含路径 include_directories(${CMAKE_SOURCE_DIR}/external/spdlog/include)# 假设你不需要构建 spdlog 库而是作为头文件库使用 add_executable(MyQtApp main.cpp mainwindow.cpp mainwindow.h mainwindow.ui)# 链接 Qt target_link_libraries(MyQtApp PRIVATE Qt5::Widgets)2. 在 Qt 项目中集成 spdlog 假设你已经将 spdlog 添加到项目中接下来我们来配置和使用它。 a. 初始化 spdlog 在你的 Qt 项目的入口处 main.cpp初始化 spdlog // main.cpp #include QApplication #include mainwindow.h #include spdlog/spdlog.h #include spdlog/sinks/basic_file_sink.h #include spdlog/sinks/stdout_color_sinks.hint main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.show();// 初始化 spdlogtry {// 创建一个同时输出到控制台和文件的 loggerauto console_sink std::make_sharedspdlog::sinks::stdout_color_sink_mt();auto file_sink std::make_sharedspdlog::sinks::basic_file_sink_mt(logs/myapp.log, true);std::vectorspdlog::sink_ptr sinks {console_sink, file_sink};auto logger std::make_sharedspdlog::logger(multi_sink, sinks.begin(), sinks.end());// 设置全局日志器spdlog::set_default_logger(logger);spdlog::set_level(spdlog::level::info); // 设置日志级别spdlog::flush_on(spdlog::level::info); // 设置自动刷新级别}catch (const spdlog::spdlog_ex ex) {fprintf(stderr, 日志初始化失败: %s\n, ex.what());return 1;}return a.exec(); }b. 在 Qt 的各个部分使用 spdlog 在你的 MainWindow 或其他类中使用 spdlog 来记录日志 // mainwindow.cpp #include mainwindow.h #include ui_mainwindow.h #include spdlog/spdlog.hMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);spdlog::info(应用程序已启动); }MainWindow::~MainWindow() {spdlog::info(应用程序正在关闭);delete ui; }void MainWindow::on_someButton_clicked() {spdlog::info(按钮被点击了);// 你的其他代码 }void MainWindow::on_errorCondition() {spdlog::error(发生了一个错误);// 错误处理代码 }3. 基本使用示例 让我们来看一个简单的示例展示如何在 Qt 应用中记录不同级别的日志。 // 在你的某个函数中 void MainWindow::performTask() {spdlog::debug(任务开始);spdlog::info(任务进行中);if (/* 某个条件 */) {spdlog::warn(遇到警告条件);}try {// 可能会抛出异常的代码}catch (const std::exception e) {spdlog::error(异常捕获: {}, e.what());}spdlog::critical(任务完成但有严重问题); }4. 高级配置多种输出目标和格式化 a. 多种 Sink spdlog 允许你将日志输出到多个目标sinks比如文件、控制台、甚至网络。 // 仅输出到控制台 auto console_sink std::make_sharedspdlog::sinks::stdout_color_sink_mt();// 仅输出到文件 auto file_sink std::make_sharedspdlog::sinks::basic_file_sink_mt(logs/myapp.log, true);// 创建包含多个 sinks 的 logger std::vectorspdlog::sink_ptr sinks {console_sink, file_sink}; auto logger std::make_sharedspdlog::logger(multi_sink, sinks.begin(), sinks.end());// 设置为默认 logger spdlog::set_default_logger(logger);b. 自定义格式化 你可以定义日志的输出格式使其更符合你的需求。 // 设置日志格式 // 例如: [2024-04-27 12:34:56.789] [info] [main.cpp:42] 这是一个信息日志 spdlog::set_pattern([%Y-%m-%d %H:%M:%S.%e] [%l] [%s:%#] %v);常用的格式化标识 %Y-%m-%d %H:%M:%S日期和时间%l日志级别info, error, etc.%s源文件名%#源代码行号%v日志消息 5. 异步日志记录 对于需要高性能的应用异步日志记录是个不错的选择。spdlog 提供了简便的异步日志支持。 #include spdlog/async.h // 需要包含这个头文件 #include spdlog/sinks/basic_file_sink.hint main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.show();try {// 初始化线程池队列大小为8192线程数为1spdlog::init_thread_pool(8192, 1);// 创建一个异步文件日志器auto async_file_sink std::make_sharedspdlog::sinks::basic_file_sink_mt(logs/async_log.txt, true);auto async_logger std::make_sharedspdlog::async_logger(async_logger, async_file_sink, spdlog::thread_pool(), spdlog::async_overflow_policy::block);// 将异步 logger 添加到默认 loggerspdlog::register_logger(async_logger);spdlog::set_default_logger(async_logger);spdlog::set_level(spdlog::level::info);spdlog::flush_on(spdlog::level::info);}catch (const spdlog::spdlog_ex ex) {fprintf(stderr, 日志初始化失败: %s\n, ex.what());return 1;}return a.exec(); }6. 在 Qt 中处理线程安全 Qt 应用通常涉及多线程操作spdlog 是线程安全的这意味着你可以在多个线程中安全地记录日志而无需担心竞争条件。 // 在主线程中 void MainWindow::startBackgroundTask() {std::thread([]() {spdlog::info(后台任务开始);// 执行一些耗时操作spdlog::info(后台任务完成);}).detach(); }7. 常见问题与解决方案 问题1日志文件没有生成或写入 解决方案 确保指定的日志目录存在。例如如果你指定 logs/myapp.log确保 logs 目录已创建。检查文件路径是否正确尤其是在不同操作系统上的路径格式。 问题2日志级别不正确 解决方案 确保设置了正确的日志级别。例如默认级别可能是 info如果你使用 debug 级别的日志可能不会输出。通过 spdlog::set_level(spdlog::level::debug); 来调整。 问题3异步日志丢失日志消息 解决方案 在应用程序退出前调用 spdlog::shutdown(); 确保所有日志消息被写入。 int main(int argc, char *argv[]) {// 初始化代码...int result a.exec();spdlog::shutdown(); // 确保所有日志被写入return result; }参考 日志的艺术深入理解 spdlog-CSDN博客
http://www.dnsts.com.cn/news/99462.html

相关文章:

  • 公司网站做的比较好开网页慢是什么原因
  • 如何选择邯郸网站建设网站模板 国外
  • wordpress站内信群发做网站建设推荐
  • 全国icp网站备案审核时间三五互联网站管理登录网址
  • 重庆好的网站建设建设植绒衣架网站
  • 点开图片跳到网站怎么做的建设大型的企业网站费用
  • 网站在线开发门户网站免费建站
  • aspnet网站开发实例教程课件outlook企业邮箱收费标准
  • 虚拟主机销售系统网站优化软件排名
  • 微信的微网站模板下载不了建立的短语
  • 个人网站怎么做支付功能天津建设工程招标信息网官网
  • 四川鸿业建设集团网站公众号登录官网入口
  • 柳州网站定制舆情信息怎么写
  • 素材网站无水印微信管理系统在哪里找
  • 周口哪里有做网站的中国电信安徽分公司招聘网站
  • 唐山建网站的公司网站二级域名怎么做
  • 廊坊网站制作费用内容营销策略
  • 百度站长工具网站提交wordpress连续id
  • 金华市建设局网站职称网站** 教程
  • 做哪个视频网站赚钱郴州在湖南什么位置
  • 黄岛区网站建设湖北省建设工程信息网
  • 点图片跳到网站怎么做万网网站多少
  • 徐州金网网站建设部队网站建设方案
  • 网站建设学什么语言长沙官网优化公司
  • 在网站上部署淘宝联盟推广代码的推广模式.系统优化方法
  • 电子商务烟台网站建设广州市住房与城乡建设厅网站
  • 网站升级页面模板网站建设公司 首推万维科技
  • 做网站一般费用多少直播网站建设品牌
  • 做h游戏视频网站有哪些网站访问找不到域名怎么回事
  • 如何能去医疗网站做编辑游戏类网站备案需要前置审批吗