Commit Graph

235 Commits

Author SHA1 Message Date
Vadim Zeitlin
e718eb9840 Fix wxLogFormatter compilation under MSW.
Fix wxMSW compilation after the changes of r70086.

Closes #13792.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70088 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-12-22 16:36:47 +00:00
Vadim Zeitlin
4ffdb64018 Add wxLogFormatter to allow easier wxLog output customization.
Delegate the log string creation to wxLogFormatter. This allows defining a
custom object of a class derived from it to customize the log output instead
of having to override DoLogRecord() in wxLog itself.

Closes #13792.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70086 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-12-22 13:35:01 +00:00
Vadim Zeitlin
c977643bb1 Translate the log message in wxLog destructor.
The message about losing the last message was not translated for some reason,
do translate it now.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69679 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-11-05 11:23:54 +00:00
Vadim Zeitlin
2371703475 Fix format string in wxLog::LogLastRepeatIfNeeded().
We used a format string without any format specifiers in it in a call to
wxString::Printf() which always had a parameter resulting in an assert failure
about a mismatch between the string and parameter count.

Fix this by using a separate Printf() call for this case.

Closes #13613.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69678 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-11-05 11:23:51 +00:00
Vadim Zeitlin
019044877a Allow using milliseconds in wxLog timestamp.
Use wxDateTime::UNow() instead of time() and wxDateTime::Format() instead of
localtime() to make it possible to use "%l" specifier in wxLog time stamp.

Closes #13059.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67268 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-21 10:59:59 +00:00
Vadim Zeitlin
a16e51b56a Restore the old logger in wxLogChain dtor instead of deleting it.
wxLogChain was leaving the global log target pointing to a deleted object,
resulting in crashes when using wxLogWindow without any explicit
SetActiveTarget() calls.

Restore the original logger as the active target in wxLogChain dtor to ensure
that the active log target remains valid.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65956 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-30 23:50:28 +00:00
Vadim Zeitlin
55e5154d2c Make calling wxLog::IsAllowedTraceMask() safe during static init time.
Although using wxLog during statics initialization is not recommended, it may
still happen, possibly indirectly so make it work correctly by using an
accessor function for the array of trace masks which ensures that this array
is always correctly initialized before being used.

Closes #11592.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63063 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-04 12:22:42 +00:00
Vadim Zeitlin
51eb060619 Fix wxLogChain (and wxLogWindow deriving from it) broken by wxLog changes.
wxLogChain::DoLogRecord() only called DoLogRecord() on the old logger but not
the new one when the new logger was the same object as wxLogChain itself as is
always the case for wxLogWindow. The result was that nothing was logged into
the window.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62777 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-12-05 01:32:45 +00:00
Vadim Zeitlin
9d7cb6715f Fix wxLog compilation with wxUSE_THREADS==0.
Define WX_DEFINE_GLOBAL_VAR macro when wxUSE_THREADS==0 too, it is used for
components level hash map in any case.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61857 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-09-08 11:21:45 +00:00
Vadim Zeitlin
03647350fc No changes, just removed hard tabs and trailing white space.
This commit is huge but there are no non-white-space changes in it.

Some files containing third-party sources (src/msw/wince/time.cpp,
src/x11/pango*.cpp) were left unchanged.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61724 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-21 10:41:26 +00:00
Vadim Zeitlin
b804f9924d Fix last error display in wxLogSysError().
After recent changes of wxLogXXX() functions into macros the last error was
overwritten by wxString::Format() called between the call to wxLogSysError()
and wxLog::CallDoLogNow() which called wxSysErrorCode() and so its original
value was lost and, unless the last error was specified explicitly, it always
came out as 0.

To fix this, call wxSysErrorCode() directly when calling wxLogSysError(). This
may be unnecessary (if the error is given explicitly) but there doesn't seem
to be any other way to fix it and the overhead of calling wxSysErrorCode()
shouldn't be that big.

Also add a unit test checking that wxLogSysError() behaves as expected.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61692 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-18 01:22:48 +00:00
Vadim Zeitlin
36a6cfd2fb Fix harmless unused parameter warning.
'info' was only used with WXWIN_COMPATIBILITY_2_8 on in  wxLog::DoLogRecord().

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61512 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-24 12:34:48 +00:00
Vadim Zeitlin
55b24eb8cd Do our best to show messages logged during program startup/shutdown.
Use wxMessageOutputBest to show them even under Windows where programs usually don't have stderr at all and also don't disable log target auto-creation during shutdown as it's arguably better to leak memory (which shouldn't matter much when the program is about to exit anyhow) than to not show possibly important messages.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61450 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-18 11:56:44 +00:00
Vadim Zeitlin
5d7526b0b8 fix log target auto creation broken by recent changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61432 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-15 12:36:09 +00:00
Vadim Zeitlin
bc1e0d4dab Ensure that component levels map is initialized before it's used (closes #10990).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61424 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-13 13:40:31 +00:00
Vadim Zeitlin
53ff8df7d5 Make wxLog::EnableLogging() and wxLogNull thread-specific.
Disabling logging in a single thread (even the main one) shouldn't disable
logs from the background threads which should disable their logging themselves
as/if needed.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61423 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-13 13:21:52 +00:00
Vadim Zeitlin
acad886cb4 Add support for thread-specific log targets.
A worker thread can now have its own log target which will be used directly
by the log functions instead of buffering log output in the main thread; the
GUI thread in the thread sample shows how it works.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61422 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-13 11:09:26 +00:00
Vadim Zeitlin
d5e7d2ec11 Make critical sections initialization really thread-safe.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61419 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-12 17:22:50 +00:00
Vadim Zeitlin
24723aa565 Removed another occurrence of previous log critical section (should have been
part of r61417).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61418 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-12 17:10:30 +00:00
Vadim Zeitlin
16b1f6fc50 Removed critical section protecting last repeat counter.
It is not needed any longer now that this is only used by
wxLog::OnLogInMainThreade() which is only called from the main thread.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61417 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-12 17:09:33 +00:00
Vadim Zeitlin
232addd1cd Made wxLogXXX() functions thread-safe.
They can now be called from any thread and will buffer the messages until the
current log target is flushed from the main thread. This makes earlier code to
do the same thing specifically for wxLogWindow unnecessary and also allows to
use wxLogMessage() in the thread sample instead of using manual logging there.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-12 17:02:30 +00:00
Vadim Zeitlin
c602c59b6e Add component-level filtering to wxLog.
Each log message is now associated with its component, "wx" by default for
messages generated by wxWidgets and wxLOG_COMPONENT in general (which is empty
by default). Each component may have its own log level and they are
hierarchical allowing fine configuration of what exactly is logged.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61414 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-12 14:56:23 +00:00
Vadim Zeitlin
0758c46ee6 fix harmless warnings about uninitialized (not really) variables in MSVC release build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61384 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-10 20:48:32 +00:00
Vadim Zeitlin
af58844636 Add information about the log message generation location to wxLog.
This means that wxLog::DoLogRecord() can now retrieve the file name, line
number and the function where the message was logged.

An unfortunate consequence of this change is that now

	if ( condition )
		wxLogError("Whatever");

results in a warning from g++ 4.x with -Wparentehses, so extra parentheses had
to be added in many places.

Finally, also allow storing arbitrary attributes in wxLogRecordInfo. This had
to be added to implement our own overloaded wxLogStatus() and wxLogSysError()
and will probably be useful for the others as well.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-09 20:26:34 +00:00
Vadim Zeitlin
fbbc4e8f80 compilation fix for !WXWIN_COMPATIBILITY_2_8 build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61352 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-09 12:00:55 +00:00
Vadim Zeitlin
bc73d5aec8 Changed wxLog DoLogXXX() callbacks and introduced wxLogRecordInfo.
The main logging callback is now DoLogRecord() with DoLogTextAtLevel() and
DoLogText() provided for convenience. The old DoLog() and DoLogString() are
still called but deprecated and their overloads taking wxString which were
only added in 2.9.0 are removed.

wxLogRecordInfo allows associating more information than just the time stamp
with the log record; for now only the logging thread id was added but more
fields will make their appearance soon.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61346 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-08 13:47:33 +00:00
Vadim Zeitlin
711f12ef2e made definition of wxUSE_LOG_DEBUG dependent on wxDEBUG_LEVEL and added wxUSE_LOG_TRACE (currently never enabled by default); fix warnings about unused variables after these changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59736 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-22 17:18:07 +00:00
Vadim Zeitlin
34085a0d4f deprecate integer trace masks and don't define the methods related to them if WXWIN_COMPATIBILITY_2_8==0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59732 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-22 16:00:37 +00:00
Vadim Zeitlin
efce878a2a add public wxLog::Log() to avoid ugly casts needed in order to call DoLog() from derived classes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59080 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-22 00:46:25 +00:00
Vadim Zeitlin
d3b9f782ef don't use annoying and unneeded in C++ casts of NULL to "T *" in all other files neither
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-19 13:55:27 +00:00
Vadim Zeitlin
e408bf5257 add safe wxStrlcpy() function and replaced all wxStrncpy() calls by it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57023 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-29 14:41:02 +00:00
Robert Roebling
dc874fb4ce Use t_str() instead of c_str()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54485 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-07-04 14:05:16 +00:00
Robert Roebling
c6867dcd51 Make wxMSW wxBase compile in UTF-8 mode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-07-03 20:34:51 +00:00
Vadim Zeitlin
766aecab3a use static functions instead of static variables for critical sections to avoid crashing if a log function using a CS is called during static objects initialization
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52594 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-03-17 21:09:02 +00:00
Vadim Zeitlin
f96233d53e protect access to ms_aTraceMasks with a critical section (replaces patch 1911172)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-03-15 03:42:48 +00:00
Vadim Zeitlin
9b4da62701 PalmOS compilation fixes (wx-trunk-out.diff part of patch 1894861)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52226 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-03-02 00:43:06 +00:00
Vadim Zeitlin
6f6b48f176 don't call LogLastRepeatIfNeeded() from dtor, it's too late to do it there anyhow; do call it from Flush() however (replaces patch 1857589)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50994 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-01-02 21:27:31 +00:00
Vadim Zeitlin
dbaa16de07 don't lock the gs_prevCS critical section recursively (replaces patch 1857581)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50993 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-01-02 21:18:15 +00:00
Vadim Zeitlin
a05166568c added wxS(); use it in a couple of places
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50987 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-01-02 16:31:38 +00:00
Vadim Zeitlin
163b3ad72c replace wrong WXDLLEXPORT declarations with correct WXDLLIMPEXP_BASE/ADV/GL (patch from Tim Stahlhut)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50646 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-12-12 01:35:53 +00:00
Vadim Zeitlin
c1f80bc0a6 made LogLastRepetitionCountIfNeeded() non static to avoid recreating the log target from ~wxLog
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-01 20:22:06 +00:00
Vadim Zeitlin
0250efd6f4 use LogLastRepetitionCountIfNeeded() instead of DoLogNumberOfRepeats() in logg.cpp too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49410 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-10-24 22:19:28 +00:00
Vadim Zeitlin
a2d3826500 add a critical section protecting ms_prev variables (replaces patch 1819224)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-10-24 17:59:53 +00:00
Vadim Zeitlin
2064113c9d slightly simplified wxLog repetition counting code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49403 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-10-24 17:55:29 +00:00
Julian Smart
47fe7ff382 Added DetachOldLog to avoid destruction of old log target
Renamed wxLogPassThrough to wxLogInterposer
Added wxLogInterposerTemp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-21 12:44:38 +00:00
Václav Slavík
e0a050e347 more changes to make wx compile without implicit wxString->char* conversion (for STL build)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46553 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-20 07:44:45 +00:00
Václav Slavík
cb296f303e compilation fix for non-STL build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46542 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-19 16:06:26 +00:00
Václav Slavík
d993e05b2d wxLog::Get/Settimestamp() now use wxString
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46539 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-19 14:51:10 +00:00
Vadim Zeitlin
5d88a6b579 added wxDEPRECATED_BUT_USED_INTERNALLY macro and use it for the old wxLog::DoLog() overloads
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46479 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-15 15:08:51 +00:00
Václav Slavík
3a3dde0d44 use wx/crt.h as the 'official' header for wxCRT wrappers instead of wxchar.h; add comments explaining that users should include wx/crt.h to implementation headers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46395 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-11 06:08:13 +00:00