问题标签 [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.
c++ - spdlog 跳过调试语句
我正在调试 C++ 代码,偶然发现 spdlog 的一个奇怪行为,其中跳过了一些调试和跟踪语句(我没有尝试过其他日志级别,但我怀疑它们会遇到同样的问题)。
这是有问题的代码片段:
我没有使用任何自定义 spdlog 接收器。spdlog 的唯一初始化是我调用它spdlog::set_pattern
并spdlog::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。
c++ - 基类导致编译错误(Visual Studio)
初学者在这里。
我最近写了一些代码来使用 spdlog 进行日志记录。
我将它基于“单例”基类,但它似乎没有工作,这让我很恼火,因为在所有其他情况下,我使用的正是它的“单例”基类。
我收到以下错误:
一些可以利用的资源
单例类
日志记录类
和(如有必要)调用它的函数
非常感谢你们提前回答:D
对不起,如果这是一个愚蠢的简单问题,我是初学者,我找不到答案,尽管它可能正盯着我看:)
c++ - 使用 CMake/VS2019 从柯南链接 spdlog 时库编译时间设置不匹配?
我正在尝试将 spdlog 1.9.0 添加到我的 CMake 项目中,对于这个项目,我正在使用 VS2019 新的基于 CMake 的项目系统来构建/运行它。当我使用非常简单的调用将 spdlog 包含在我的实现中时,我在尝试构建时收到链接器错误。
链接器错误如下:
错误会重复几次(准确地说是 4 次)。
似乎 spdlog 是使用一组 RuntimeLibrary 设置构建/部署到柯南的存储库的,而我使用的是不同的设置?有什么我可以做的吗?
以下是有关我的设置的更多数据:
conanfile.txt
CMakeLists.txt
c++ - SPDLOG_LOGGER_CALL 和 __VA_ARGS__ 在
我试图理解为什么我的可变参数在spdlog
. 我知道有一个SPDLOG_LOGGER_INFO
宏可以做我所做的事情,但目前我需要了解它是如何SPDLOG_LOGGER_CALL
工作的。所以这里是代码:
编译后我得到以下输出
但是我希望在输出中看到完整的消息,即
我觉得我错过了一些小而重要的东西。有人愿意帮忙吗?
c++ - C++:如何使用 spdlog 打印自定义类指针?
我面临一个小问题。我需要用来spdlog
记录并且我有自定义类。而且由于spdlog
能够处理用户定义的类,我可以使用它来记录我的类。
但是,我是我真正的应用程序,我想spdlog
用我的类的指针来提供(因为存在多态性,但这不是重点)。这就是我的麻烦。当我尝试spdlog
用unique_ptr
我的班级喂食时,它不会编译。
所以这里有一个MWE:
我从编译器得到错误gcc
:
我猜问题出在template<typename OStream> OStream &operator<<(OStream &os,const my_type* c)
and spdlog
or之间的交互fmt
。所以我试着玩了一下,但我被卡住了。
你有解决这个问题的想法pLog->info("user defined type: {}", ptrA);
吗?
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)
这个错误:
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
:
我知道这并没有真正告诉我们任何事情,但这就是输出控制台给我的全部内容。该文件依赖于解决方案中的其他一些文件,因此我很难提供一个可以轻松运行的示例。抱歉,信息太少了,但任何帮助都会大有帮助。
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.
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
?