我无法更改wxLog功能的LogLevel。
我想要实现的目标:将所有内容记录到日志文件中。
在下面的示例中,代码日志记录基本上有效,但我只看到LogLevel为Warning
或Error
的邮件。我认为使用wxLog::SetLogLevel(wxLOG_Info);
设置logLevel应该足够了,但显然我错过了一些东西。任何提示?
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#include <wx/stdpaths.h>
class TestApp : public wxApp
{
public:
virtual bool OnInit();
private:
FILE* m_pLogFile;
};
bool TestApp::OnInit()
{
m_pLogFile = fopen("c:\\tmp\\foo.txt", "a+");
if (m_pLogFile == NULL)
{
return false;
}
wxLogStderr* pFileLogger = new wxLogStderr(m_pLogFile);
delete wxLog::SetActiveTarget(pFileLogger);
wxLog::SetLogLevel(wxLOG_Info);
wxLogError(L"Error");
wxLogWarning(L"Warning");
wxLogInfo(L"Info");
wxLogVerbose(L"Verbose");
wxLogDebug(L"Debug");
wxFrame* pFrame = new wxFrame(NULL, wxID_ANY, L"Title");
pFrame->Show();
return true;
}
wxIMPLEMENT_APP(TestApp);
答案 0 :(得分:1)
由于不幸的历史原因wxLogInfo()
实际上与wxLogVerbose()
完全相同,并且出于同样不幸的向后兼容性原因,必须通过显式调用wxLog::SetVerbose(true)
来启用详细日志记录,因此没有它记录“信息”和“详细”(并且两者都会记录)。
实际上我们可能最终应该在wxWidgets 3.2中修复它,所以希望它在下一个版本中不会像这样工作。但是现在您需要调用SetVerbose()
以启用这些消息以及来设置日志级别。