问题标签 [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 投票
1 回答
2444 浏览

c++ - 如何更改 spdlog 每日记录器中的默认滚动时间?

使用spdlog,如何更改每日记录器的默认滚动时间?

在以下示例中,滚动仅在午夜发生:

0 投票
2 回答
21571 浏览

c++ - 使用 spdlog 从库中记录

我正在尝试在涉及 windows 下的库的项目中使用spdlog。我创建了两个记录器。一个用于使用库的应用程序,一个用于库本身。库的记录器是从应用程序创建的,但是当库想要添加消息时,它会崩溃。

下面是一个简化的例子。

图书馆

libclass.h

库类.cpp

应用程序

主文件

0 投票
1 回答
2679 浏览

c++ - 如何在同一个程序中多次启动和关闭spdlog?

我正在使用 spdlog 为 Visual Studio 中的托管和非托管代码运行日志。出于这个原因,我编写了在底层使用 spdlog 的 shell 类。

但是,我的单元测试遇到了问题。我的单元测试在单个可执行文件中运行,因此我需要多次停止并重新启动 spdlog 记录器和日志文件。

我该怎么做呢?我在一个类中使用这个代码来启动 Windows DLL 中的 spdlog 实例:

0 投票
3 回答
11870 浏览

c++ - cmake 仅包含标头库

我想将spdlog包含到我的项目之一中。它是一个只有标题的库。我正在构建的项目正在使用 cmake。目前我正在使用

在 cmake 中并将库包括为

在 logger 文件夹内的 logs.h 中。我收到致命错误,没有这样的文件或目录。在我的应用程序中包含相同库的正确方法是什么。

0 投票
1 回答
622 浏览

pid - 如何使用 spdlog 记录 pid(进程 ID)

spdlog可以通过以下方式登录threadid

spdlog::set_pattern("*** [%H:%M:%S %z] [thread %t] %v ***");

但是我怎样才能记录pid(process id)

0 投票
1 回答
682 浏览

c++ - 一个库中的函数与另一个库中的模板匹配

我正在开发一个使用两个不同库的 C++ 项目:spdlog用于日志记录,mutils-serialization用于将对象序列化为字节(用于通过网络发送)。这两个库都正确使用了命名空间,但是当我尝试编写一个同时使用它们的程序时,我的编译器(g++ 6.2)给了我一些荒谬的错误,似乎表明它正在尝试从 spdlog 库中实例化一个函数模板通过使用 mutils 库中的函数模板的定义。

这是我的简单测试程序:

TestSerializableObject是一个实现mutils::ByteRepresentable(启用序列化并引入 mutils-serialization 库的接口)的简单类,并提供一个operator<<(spdlog 能够记录它所必需的)。如有必要,我可以发布它的代码。

当我用 编译它时g++ -std=c++14 -I"./src" -I"./libraries" -I"./libraries/mutils/" -L"./libraries/" -O0 -g3 -Wall "src/LibraryCollisionTest.cpp",我得到了这个又长又丑的错误(别担心,我会帮你解析它):

关键线在这里:

不知何故,g++ 已经从扩展 spdlog 库中的模板函数,在 namespacefmt::internal中,跳跃到 mutils 库中的函数模板,在 namespace 中mutils,这显然不是 spdlog 库打算做的!如果我查看第 1276 行format.h,它就是在这个模板结构中调用“convert”函数的那个​​:

上面几行,果然是函数“convert”:

这些都在 namespace 之内fmt::internal,我的 IDE 同意,如果我想要第 1276 行的函数“convert”的定义,我应该跳转到第 1248 行的函数“convert”。那么为什么 g++ 忽略这个定义,而是尝试使用 for 的定义mutils::convert(),它甚至不在正确的命名空间中?

请注意,clang 也无法编译此程序,并且会犯同样的错误,所以我认为这不是 g++ 中的错误。

0 投票
1 回答
7385 浏览

c++ - 使用 CMake 添加仅标头依赖项

我有一个简单的项目,它需要三个仅标头库才能编译:websocketppspdlognlohmann/json

项目结构如下所示:

根 CMakeLists.txt 如下:

这个想法基本上是每个子目录都是一个库(例如core),并且app“聚合”了所有子目录。每个库(例如core)都是这样构建的(core/CMakeLists.txt):

请注意我如何链接依赖项(它们是仅标头库!)。这就是我获取它们的方式(vendor/install.cmake):

到目前为止一切顺利:您可以看到依赖项是作为 git 子模块获取的,幸运的是,这使得管理它们变得更容易。但是,当我使用 编译我的项目时mkdir build && cd build && cmake ../src,出现以下错误:

CMake 错误:安装(EXPORT FooCoreConfig ...)包括目标 foo-core,它需要不在导出集中的目标 websocketpp。

CMake 错误:安装(EXPORT FooCoreConfig ...)包括目标 foo-core,它需要不在导出集中的目标 spdlog。

包括标头,例如#include <spdlog/spdlog.h>#include <nlohmann/json.hpp>产生错误,指出标头未找到。

说实话,我对 CMake 不太满意,过去两天我一直在调试它。这可能是非常简单的事情,但我不知道如何实现它。实际上,只需将 -I 作为编译器标志传递即可使用我想要的库,但 CMake 抽象似乎让我感到困惑。如果有人能解释为什么这不起作用,我会很高兴,并且希望将这些库包含到我的项目中的正确方法是什么。提前致谢!

0 投票
1 回答
614 浏览

visual-studio-2015 - 如何将 Windows 调试记录器附加到 spdlog

我想知道如何将 windows 调试记录器附加到spdlog,它声称它支持 Windows 调试日志 (OutputDebugString)

我找不到任何例子来做到这一点。

谢谢

0 投票
2 回答
852 浏览

c++ - C++ SPDLOG 编译错误:变量或字段 'set_error_handler' 声明为 void

我正在尝试在我的项目中使用 spdlog。根据 spdlog docu,我只需要复制包含文件夹下的文件并使用 C++ 11 编译器。

我将 /include/spdlog 文件夹复制到我的项目根文件夹,但在尝试构建项目后出现了很多错误。有些是ff:

我尝试在 CMakeLists.txt 中添加以下内容

(我安装了 libspdlog-dev)

但以上都不起作用。有谁知道我该如何解决这个问题?非常感谢!

0 投票
3 回答
9021 浏览

c++ - 如何在代码中启用/禁用 spdlog 日志记录?

我正在我的应用程序中创建 c++ 库模块。要进行日志记录,我使用spdlog。但在生产环境中,我不希望我的 lib 模块进行任何日志记录。实现打开/关闭的一种方法是在我的代码中乱扔#ifdef 条件,例如...

我正在寻找一种避免编写这些条件的方法。可能是一个包装函数,它执行#ifdef 检查并编写它。但是这种方法的问题是我必须为每个日志记录方法编写包装器(例如 info、trace、warn、error ......)

有没有更好的办法?