更改 wxWidgets 日志级别
Change wxWidgets LogLevel
我无法更改 wxLog 功能的 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);
由于不幸的历史原因 wxLogInfo()
实际上与 wxLogVerbose()
完全相同,并且出于同样不幸的向后兼容性原因,必须通过显式调用 wxLog::SetVerbose(true)
来启用详细日志记录,因此没有"Info" 和 "Verbose" 都没有被记录(并且两者都会被记录)。
实际上我们可能最终应该在 wxWidgets 3.2 中修复这个问题,所以希望它在下一个版本中不会像这样工作。但是现在您需要调用 SetVerbose()
来启用这些消息 此外 还要设置日志级别。
我无法更改 wxLog 功能的 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);
由于不幸的历史原因 wxLogInfo()
实际上与 wxLogVerbose()
完全相同,并且出于同样不幸的向后兼容性原因,必须通过显式调用 wxLog::SetVerbose(true)
来启用详细日志记录,因此没有"Info" 和 "Verbose" 都没有被记录(并且两者都会被记录)。
实际上我们可能最终应该在 wxWidgets 3.2 中修复这个问题,所以希望它在下一个版本中不会像这样工作。但是现在您需要调用 SetVerbose()
来启用这些消息 此外 还要设置日志级别。