2

我刚刚拿起 spdlog 以改进我们的日志记录。我们的日志记录非常基础,所以我只是几乎逐字复制“多接收器”示例以记录到文件和控制台。

但是,即使完全按照示例进行操作,我也会得到:

错误 C2338 不知道如何格式化类型,包括 fmt/ostream.h 如果它提供了应该使用的 operator<< Logger d:\tfs\development\bladed\main\external\spdlog\spdlog-1.x \include\spdlog\fmt\bundled\core.h 351

来自core.h:

// A formatter for objects of type T.
template <typename T, typename Char = char, typename Enable = void>
struct formatter {
  static_assert(no_formatter_error<T>::value,
    "don't know how to format the type, include fmt/ostream.h if it provides "
    "an operator<< that should be used");

我想这很容易解决,但我看不到它......

【Win32基本使用】

4

1 回答 1

3

@PaulMcKenzie 为我指明了正确的方向,似乎我试图记录 spdlog 默认无法处理的字符串类型(std::wstrings)。

Visual Studio 的 Intellisense 似乎对模板感到困惑,使它对我发送 spdlog::warn 和 std::wstring 似乎很满意。

解决方案:要么只使用 std::string,要么如果你想使用 wstrings,你(可能)需要为它们定义一个自定义格式化程序。

于 2018-11-22T14:54:34.623 回答