qt中使用spdlog输出到qt控件QTextBrowser,QTextEdit

qt中使用spdlog

github:https://github.com/gabime/spdlog

环境安装方式

Package managers:

Debian: sudo apt install libspdlog-dev
Homebrew: brew install spdlog
MacPorts: sudo port install spdlog
FreeBSD: pkg install spdlog
Fedora: dnf install spdlog
Gentoo: emerge dev-libs/spdlog
Arch Linux: pacman -S spdlog
openSUSE: sudo zypper in spdlog-devel
vcpkg: vcpkg install spdlog
conan: spdlog/[>=1.4.1]
conda: conda install -c conda-forge spdlog
build2: depends: spdlog ^1.8.2

编译安装

$ git clone https://github.com/gabime/spdlog.git
$ cd spdlog && mkdir build && cd build
$ cmake .. && make -j

通过cmake 引入项目

#包管理的方式安装的不用设置这个变量
set(spdlog_DIR "${CMAKE_CURRENT_SOURCE_DIR}/deps/spdlog/lib/cmake/spdlog")
find_package(spdlog REQUIRED)
#链接库
target_link_libraries(xxxx  spdlog::spdlog $<$<BOOL:${MINGW}>:ws2_32>

官方文档链接:https://github.com/gabime/spdlog/wiki/4.-Sinks

日志同时输出文件和qt控件QTextBrowser,QTextEdit…

介绍:

mtst 是两种不同的 sink 后缀,表示不同的多线程支持模式

mt 代表多线程(Multi-threading)模式。使用具有多线程支持的版本的 sink 可以在多个线程中同时安全地写入日志。这些多线程 sink 使用了互斥锁(mutex)等机制来确保并发写入时的线程安全性。例如,basic_file_sink_mt 是支持多线程的基本文件 sink。

st 代表单线程(Single-threading)模式。单线程 sink 适用于单线程环境,不进行任何线程安全处理。在多线程环境下使用单线程 sink 可能会导致竞态条件和不确定行为。例如,basic_file_sink_st 是单线程的基本文件 sink。

代码

#include <spdlog/sinks/qt_sinks.h>
#include <spdlog/sinks/daily_file_sink.h>
#include <spdlog/spdlog.h>

	//LOGGER_SAVE_PATH日志文件
	//每天00:00更新日志文件
    auto fileSink = std::make_shared<spdlog::sinks::daily_file_sink_mt>(LOGGER_SAVE_PATH, 0, 0);
    //ui->textBrowser 指定一个显示日志的textBrowser或者textEdit控件
    //第二次参数是方法
    auto qtSink = std::make_shared<spdlog::sinks::qt_sink_mt>(ui->textBrowser, "append");

    auto logger = std::make_shared<spdlog::logger>("logger", spdlog::sinks_init_list{fileSink, qtSink});
 
    logger->set_level(spdlog::level::debug);
    //设置 logger 在达到指定级别(这里是 debug)时进行刷新操作,不等待缓冲区满或程序结束
    logger->flush_on(spdlog::level::debug);
    logger->info("qt logger and file logger");
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值