我正在尝试通过以下方式使用 log4cpp 启用日志记录。
class Foo
{
private:
log4cpp::Appender* _logAppender;
log4cpp::Layout* _logAppenderLayout;
}
Foo::Foo()
{
_logAppender = new log4cpp::FileAppender("foo", "logs/bar.log"));
_logAppenderLayout = new log4cpp::BasicLayout();
_logAppender.setLayout(_logAppenderLayout);
log4cpp::Category::getRoot().setPriority(log4cpp::Priority::DEBUG);
log4cpp::Category::getRoot().addAppender(_logAppender);
// Crash on line below.
log4cpp::Category::getRoot().debugStream() << "test";
}
当我到达尝试将“测试”写入日志的行时,我得到一个显示“调试断言失败!”的崩溃。断言在 f:\dd\vctools\crt_bld_self_64_amd64\crt\src\write.c 第 67 行。失败的断言是
fh >= 0 && (unsigned)fh < (unsigned)_nhandle
我已经创建了日志目录和 bar.log 文件以确保它存在。我还确认我的应用程序和库都是作为 64 位多线程调试 DLL 构建的。log4cpp 源中没有 64 位构建,所以我基于 32 位构建配置创建了一个。我正在使用最新版本的 log4cpp。