我試圖用以下方式啓用log4cpp日誌記錄。當試圖寫入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。
也許log4cpp需要的不僅僅是64位版本的配置更改。例如,有許多問題需要關注指針和手柄大小。 –
我在想這可能是這樣的。我現在正在查看其他日誌框架,但是希望有人在64位應用程序中使用log4cpp可以看到這一點。 –
對於遇到此問題的任何人,我無法使其工作。我的解決方案是轉到google-glog https://code.google.com/p/google-glog/。它沒有內置的64位配置,但很容易創建。 –