unsigned wxLog::LogLastRepeatIfNeeded() { const unsigned count = gs_prevLog.numRepeated; if ( gs_prevLog.numRepeated ) { wxString msg; #if wxUSE_INTL if ( gs_prevLog.numRepeated == 1 ) { // We use a separate message for this case as "repeated 1 time" // looks somewhat strange. msg = _("The previous message repeated once."); } else { // Notice that we still use wxPLURAL() to ensure that multiple // numbers of times are correctly formatted, even though we never // actually use the singular string. msg.Printf(wxPLURAL("The previous message repeated %lu time.", "The previous message repeated %lu times.", gs_prevLog.numRepeated), gs_prevLog.numRepeated); } #else msg.Printf(wxS("The previous message was repeated %lu time(s)."), gs_prevLog.numRepeated); #endif gs_prevLog.numRepeated = 0; gs_prevLog.msg.clear(); DoLogRecord(gs_prevLog.level, msg, gs_prevLog.info); } return count; }
void wxLog::CallDoLogNow(wxLogLevel level, const wxString& msg, const wxLogRecordInfo& info) { if ( GetRepetitionCounting() ) { if ( msg == gs_prevLog.msg ) { gs_prevLog.numRepeated++; // nothing else to do, in particular, don't log the // repeated message return; } LogLastRepeatIfNeeded(); // reset repetition counter for a new message gs_prevLog.msg = msg; gs_prevLog.level = level; gs_prevLog.info = info; } // handle extra data which may be passed to us by wxLogXXX() wxString prefix, suffix; wxUIntPtr num = 0; if ( info.GetNumValue(wxLOG_KEY_SYS_ERROR_CODE, &num) ) { const long err = static_cast<long>(num); suffix.Printf(_(" (error %ld: %s)"), err, wxSysErrorMsg(err)); } #if wxUSE_LOG_TRACE wxString str; if ( level == wxLOG_Trace && info.GetStrValue(wxLOG_KEY_TRACE_MASK, &str) ) { prefix = "(" + str + ") "; } #endif // wxUSE_LOG_TRACE DoLogRecord(level, prefix + msg + suffix, info); }
unsigned wxLog::LogLastRepeatIfNeeded() { const unsigned count = gs_prevLog.numRepeated; if ( gs_prevLog.numRepeated ) { wxString msg; #if wxUSE_INTL msg.Printf(wxPLURAL("The previous message repeated once.", "The previous message repeated %lu times.", gs_prevLog.numRepeated), gs_prevLog.numRepeated); #else msg.Printf(wxS("The previous message was repeated %lu times."), gs_prevLog.numRepeated); #endif gs_prevLog.numRepeated = 0; gs_prevLog.msg.clear(); DoLogRecord(gs_prevLog.level, msg, gs_prevLog.info); } return count; }