我刚刚选择了spdlog来改善我们的日志记录。我们的日志记录是非常基础的,因此我只是几乎逐字复制“多接收器”示例以记录到文件和控制台。
但是,即使完全按照示例进行操作,我也会得到:
错误C2338不知道如何格式化类型,如果提供了运算符,请包含fmt / ostream.h <<应该使用的记录程序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的基本用法]
答案 0 :(得分:2)
@PaulMcKenzie指向正确的方向时,似乎我正在尝试记录spdlog默认无法处理的字符串类型(std :: wstrings)。
Visual Studio的Intellisense似乎对模板感到困惑,这使其对我发送的spdlog :: warn std :: wstring感到满意。
解决方案:要么仅使用std :: string,要么如果您想使用wstrings,则(可能)需要为其定义自定义格式化程序。