问题标签 [spdlog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
101 浏览

c++ - spdlog 跳过调试语句

我正在调试 C++ 代码,偶然发现 spdlog 的一个奇怪行为,其中跳过了一些调试和跟踪语句(我没有尝试过其他日志级别,但我怀疑它们会遇到同样的问题)。

这是有问题的代码片段:

我没有使用任何自定义 spdlog 接收器。spdlog 的唯一初始化是我调用它spdlog::set_patternspdlog::set_level在程序开始时进行的,所以一切都将输出到标准输出。

使用上面的代码,所有的行都会std::cerr正确打印到 stderr。但是spdlog::trace("DDDDD");会被跳过并且不会出现在日志中的任何位置。这是一个输出示例:

如果我在打印循环之前删除打印到std::cerr, only BBBBB, CCCCC,EEEEE和 debug 语句。其他的都没有打印出来。输出示例:

我的程序是多线程的,但是这个代码部分是在一个线程中执行的,它是唯一调用 spdlog 的线程。

什么可能导致这样的 spdlog 语句被跳过?

我在 Debian 上使用 g++ 8.3.0 和 spdlog 1.8.1。

0 投票
1 回答
64 浏览

c++ - 基类导致编译错误(Visual Studio)

初学者在这里。

我最近写了一些代码来使用 spdlog 进行日志记录。

我将它基于“单例”基类,但它似乎没有工作,这让我很恼火,因为在所有其他情况下,我使用的正是它的“单例”基类。

我收到以下错误:

一些可以利用的资源

单例类

日志记录类

和(如有必要)调用它的函数

非常感谢你们提前回答:D
对不起,如果这是一个愚蠢的简单问题,我是初学者,我找不到答案,尽管它可能正盯着我看:)

0 投票
1 回答
192 浏览

c++ - 使用 CMake/VS2019 从柯南链接 spdlog 时库编译时间设置不匹配?

我正在尝试将 spdlog 1.9.0 添加到我的 CMake 项目中,对于这个项目,我正在使用 VS2019 新的基于 CMake 的项目系统来构建/运行它。当我使用非常简单的调用将 spdlog 包含在我的实现中时,我在尝试构建时收到链接器错误。

链接器错误如下:

错误会重复几次(准确地说是 4 次)。

似乎 spdlog 是使用一组 RuntimeLibrary 设置构建/部署到柯南的存储库的,而我使用的是不同的设置?有什么我可以做的吗?

以下是有关我的设置的更多数据:

conanfile.txt

CMakeLists.txt

0 投票
1 回答
210 浏览

c++ - SPDLOG_LOGGER_CALL 和 __VA_ARGS__ 在

我试图理解为什么我的可变参数在spdlog. 我知道有一个SPDLOG_LOGGER_INFO宏可以做我所做的事情,但目前我需要了解它是如何SPDLOG_LOGGER_CALL工作的。所以这里是代码:

编译后我得到以下输出

但是我希望在输出中看到完整的消息,即

我觉得我错过了一些小而重要的东西。有人愿意帮忙吗?

这是 SPDLOG_LOGGER_CALL 定义的地方

0 投票
1 回答
600 浏览

c++ - C++:如何使用 spdlog 打印自定义类指针?

我面临一个小问题。我需要用来spdlog记录并且我有自定义类。而且由于spdlog能够处理用户定义的类,我可以使用它来记录我的类。

但是,我是我真正的应用程序,我想spdlog用我的类的指针来提供(因为存在多态性,但这不是重点)。这就是我的麻烦。当我尝试spdlogunique_ptr我的班级喂食时,它不会编译。

所以这里有一个MWE:

我从编译器得到错误gcc

我猜问题出在template<typename OStream> OStream &operator<<(OStream &os,const my_type* c)and spdlogor之间的交互fmt。所以我试着玩了一下,但我被卡住了。

你有解决这个问题的想法pLog->info("user defined type: {}", ptrA);吗?

0 投票
1 回答
472 浏览

cmake - 尝试将 spdlog 静态库与 cmake 链接时出错

我使用那里的文档安装了 spdlog 静态库,并尝试使用那里的示例 将它链接到我的程序,安装路径是这样的: /home/yaodav/Desktop/dnr_main_repo/lib/external

这是我的 CMAKE:

但我收到此错误:

CMakeLists.txt:23 (find_package) 处的 CMake 错误:通过在 CMAKE_MODULE_PATH 中未提供“Findspdlog.cmake”,该项目要求 CMake 查找“spdlog”提供的包配置文件,但 CMake 没有找到。

找不到由“spdlog”提供的具有以下任何名称的包配置文件:

将“spdlog”的安装前缀添加到 CMAKE_PREFIX_PATH 或将“spdlog_DIR”设置为包含上述文件之一的目录。如果“spdlog”提供单独的开发包或SDK,请确保已安装。

所以我添加了spdlog_DIR set(spdlog_DIR ../lib/external/spdlog find_package(spdlog PATHS ${spdlog_DIR } REQUIRED) 这个错误:

0 投票
1 回答
160 浏览

c++ - 使用 spdlog 时“无法格式化参数”

我一直在关注 The Cherno 的游戏引擎系列,但遇到了一个似乎无法解决的问题。到目前为止,这是该系列中唯一我不明白的部分,我在互联网上找到的任何内容都没有帮助。

我们正在创建一个事件系统,其中某些事件(输入、窗口大小调整等)使用从spdlog库构建的日志系统记录到控制台。事件分派器将事件分派给适当的函数:

当我构建我的项目时,我得到了错误error C2338: Cannot format argument. To make type T formattable provide a formatter<T> specialization。也许我对 C++ 模板的理解不够好,或者我在滥用库,但我终其一生都无法弄清楚是什么导致了这个错误。我确保我按照这里<fmt/ostream.h>的建议包括在内,但它并没有解决问题。

如果有人知道spdlog并可以帮助我,我将不胜感激。谢谢!

编辑:

完整的输出错误是

它指向第 1568 行spdlog\include\spdlog\fmt\core.h

我知道这并没有真正告诉我们任何事情,但这就是输出控制台给我的全部内容。该文件依赖于解决方案中的其他一些文件,因此我很难提供一个可以轻松运行的示例。抱歉,信息太少了,但任何帮助都会大有帮助。

0 投票
1 回答
83 浏览

c++ - Spdlog 和 VS2019 Intellisense 错误

我正在使用 VS2019 (16.11.3) 和 Spdlog 1.9.2。

这是我正在使用的代码:

代码编译并正常工作,但是 VS2019 的 Intellisense 给出了这个错误couldn't match type fmt::format_string<Args...> against const char[17]错误截图

我已经删除了我的.vs文件夹并重新启动了 Visual Studio,但无济于事。

我还可以做些什么?我有什么明显的遗漏吗?

提前致谢。

0 投票
0 回答
108 浏览

c++ - std::string_view rvalue from macro not a constant expression when building on aarch64 using GCC

I have an issue building my library for aarch64. Note that this code builds and runs fine when building for x86.

I have a macro:

I use it in the code like this:

And it calls a template member function of my logger class (which is a wrapper for spdlog). Note that you can find spdlog here: https://github.com/gabime/spdlog/tree/v1.x/include/spdlog. I am currently using commit 8826011.

I am building with cmake 3.16.3 (c++20) and gcc 10.3.0 (from the Ubuntu 20.04 repo) on a raspberry pi 4:

I think this is a bug with the aarch64 version of gcc/g++ seeing as the x86 version of this compiles fine but wanted to run this by others to see if it is anything I might be doing.

0 投票
1 回答
107 浏览

c++ - C++ 的 spdlog;what():无法打开文件 ~/logs/log.txt 进行写入:没有这样的文件或目录

我正在使用 spdlog 在 beaglebone、debian 10 上的 c++ 程序上进行一些简单的日志记录。我设置了一个旋转记录器:

auto logger = spdlog::rotating_logger_mt("runtime_log", "~/logs/log.txt", max_size, max_files);

这会返回错误

我已经确保该目录存在并尝试过chmod -R 776 ~/logs/

当给定路径logs/log.txt时,它可以工作。这会将日志文件放入~/project/build/logs

我也试过给出完整的路径/home/user/logs/log.txt。这很好用。

为什么我的程序和 spdlog 无法访问路径下的目录~/logs/log.txt