С его помощью можно решить проблему ведения лога одновременно в файл и, например, в текстовый контрол.
Если необходимо выводить сообщения в файл не только в ANSI, а и в Unicode,
то очень удобно использовать логгер wxLogStream.
Для его использования, потребуется собрать (если еще не собрано) wxWidgets с выставленной поддержкой std потоков. Для этого необходимо выставить соответствующую
директиву в файле setup.h:
#define wxUSE_STD_IOSTREAM 1
После этого, в приложении потребуется установить целевой логгер:
//wxTestApp.h
// в классе приложения добавить мембер потока
...
#include
...
class wxTestApp: public wxApp
{
...
private:
std::ofstream m_logStream;
...
};
//wxTestApp.cpp
// в OnInit() проинициализировать целевой логгер
bool wxCDCreatorApp::OnInit() {
// задаем имя лога (в каталоге приложения, файл <имя файла приложения>.log
wxString logPath = wxPathOnly(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, wxLogDebug (только в отладочной версии),
wxLogTrace вести журналирование. В результате работы, в лог пишутся сообщения в примерно таком формате:
09:55:05: Запуск приложения...
Комментариев нет:
Отправить комментарий