В wxWidgets есть отличный механизм журналирования wxLog
.
С его помощью можно решить проблему ведения лога одновременно в файл и, например, в текстовый контрол.
Если необходимо выводить сообщения в файл не только в ANSI, а и в Unicode,
то очень удобно использовать логгер wxLogStream
.
Для его использования, потребуется собрать (если еще не собрано) wxWidgets с выставленной поддержкой std потоков:
#define wxUSE_STD_IOSTREAM 1
в файле setup.h. После этого, в приложении потребуется установить целевой логгер:
//wxTestApp.h // в классе приложения добавить мембер потока ... #include ... class wxTestApp: public wxApp { ... private: std::ofstream m_logStream; ... }; //wxTestApp.cpp // в OnInit() проинициализировать целевой логгер bool wxCDCreatorApp::OnInit() { // задаем имя лога (в каталоге приложения, файл <имя файла приложения>.log wxString logPath = wxwxPathOnly(wxGetApp().argv[0]) + wxFileName::GetPathSeparator() + GetAppName() + wxT(".log"); m_logStream.open(logPath.GetData()); // не забываем удалить предыдущий логгер delete wxLog::SetActiveTarget(new wxLogStream(reinterpret_cast<std::ostream*>(&m_logStream))); // можно работать wxLogMessage(wxT("Запуск приложения...")); ... // инициализация приложения } // и в OnExit() закрываем поток int wxCDCreatorApp::OnExit() { wxLogMessage(wxT("Выход...")); m_logStream.close(); return wxApp::OnExit(); }
После этого, в любой части приложения возмножно с помощью функций wxLogMessage[/sourcecode],
wxLogDebug[/sourcecode] (только в отладочной версии),
wxLogTrace[/sourcecode] вести журналирование. В результате работы, в лог пишутся сообщения в примерно таком формате:
09:55:05: Запуск приложения...
Введение Уже долгое время не пишу статьи о разработке, хотя сам процесс написания мне очень…
I can see that there is still a lot of topics at wxWidgets forums related…
I've just published the source code of wxToolBox component and a couple of sample apps at…
Microsoft released their Kinect SDK several days ago. So, for those wxWidgets developers who are…
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to…
Вдохновленнный читаемой нынче книгой My Job Went to India: 52 Ways to Save Your Job…