added wxLogBuffer which collects all log messages in a string buffer

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2005-06-06 23:35:40 +00:00
parent e12a951e75
commit d3fc175515
2 changed files with 40 additions and 2 deletions

View File

@@ -288,11 +288,31 @@ private:
// "trivial" derivations of wxLog
// ----------------------------------------------------------------------------
// log everything to a buffer
class WXDLLIMPEXP_BASE wxLogBuffer : public wxLog
{
public:
wxLogBuffer() { }
// get the string contents with all messages logged
const wxString& GetBuffer() const { return m_str; }
// show the buffer contents to the user in the best possible way (this uses
// wxMessageOutputMessageBox) and clear it
virtual void Flush();
protected:
virtual void DoLogString(const wxChar *szString, time_t t);
private:
wxString m_str;
DECLARE_NO_COPY_CLASS(wxLogBuffer)
};
// log everything to a "FILE *", stderr by default
class WXDLLIMPEXP_BASE wxLogStderr : public wxLog
{
DECLARE_NO_COPY_CLASS(wxLogStderr)
public:
// redirect log output to a FILE
wxLogStderr(FILE *fp = (FILE *) NULL);
@@ -302,6 +322,8 @@ protected:
virtual void DoLogString(const wxChar *szString, time_t t);
FILE *m_fp;
DECLARE_NO_COPY_CLASS(wxLogStderr)
};
#if wxUSE_STD_IOSTREAM

View File

@@ -522,6 +522,22 @@ void wxLog::Flush()
return false;
}
// ----------------------------------------------------------------------------
// wxLogBuffer implementation
// ----------------------------------------------------------------------------
void wxLogBuffer::Flush()
{
wxMessageOutputBest out;
out.Printf(_T("%s"), m_str.c_str());
m_str.clear();
}
void wxLogBuffer::DoLogString(const wxChar *szString, time_t WXUNUSED(t))
{
m_str << szString << _T("\n");
}
// ----------------------------------------------------------------------------
// wxLogStderr class implementation
// ----------------------------------------------------------------------------