2016-03-04 3 views
1

Я не могу изменить LogLevel функций wxLog.Изменение wxWidgets LogLevel

Что бы я хотел достичь: зарегистрируйте все в лог-файле.

В следующем примере запись в основном работает, но я вижу только сообщения с LogLevel Warning или Error. Я думал, что установить logLevel с использованием wxLog::SetLogLevel(wxLOG_Info); должно быть достаточно, но, очевидно, я чего-то не хватает. Любые намеки?

#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); 

ответ

2

Из-за печальных исторических причин wxLogInfo() на самом деле точно так же, как wxLogVerbose() и одинаково несчастными причинам обратной совместимости, ведение подробного журнала должен быть включен явным вызовом wxLog::SetVerbose(true), поэтому без него ни «Info», ни «размашистый» являются (и с ним оба будут).

На самом деле мы, вероятно, должны, наконец, исправить это в wxWidgets 3.2, так что, надеюсь, в следующей версии это не сработает. Но на данный момент вам нужно позвонить SetVerbose(), чтобы включить эти сообщения дополнительно, чтобы установить уровень журнала.

+0

Также см. [Это фиксация] (https://github.com/wxWidgets/wxWidgets/commit/da7388c9c8f875c4136b79c547e7663fe9bc41f7) –

Смежные вопросы