Mercurial > ecos
diff host/tools/Utils/common/eCosTrace.cpp @ 82:6736c52df507 ecos-sw-2000-04-14
Merge from eCos master repository on 2000-04-14-13:35:46-BST
| author | jlarmour |
|---|---|
| date | Tue, 18 Apr 2000 21:51:55 +0000 |
| parents | 435cced73e2f |
| children | 74dbf4c3f2e1 |
line wrap: on
line diff
--- a/host/tools/Utils/common/eCosTrace.cpp +++ b/host/tools/Utils/common/eCosTrace.cpp @@ -35,7 +35,7 @@ #include "eCosThreadUtils.h" #include "eCosTrace.h" -bool CeCosTrace::bVerbose=false; +CeCosTrace::TraceLevel CeCosTrace::nVerbosity=CeCosTrace::TRACE_LEVEL_ERRORS; bool CeCosTrace::bInteractive=false; LPCTSTR CeCosTrace::arpszDow[7]={_T("Su"),_T("M"),_T("Tu"),_T("W"),_T("Th"),_T("F"),_T("Sa")}; @@ -58,12 +58,12 @@ void CALLBACK CeCosTrace::StreamLogFunc( bool CeCosTrace::SetOutput(LPCTSTR pszFilename) { - FILE *f=_tfopen(pszFilename,_T("at")); + FILE *f=_tfopen(pszFilename,_T("a") MODE_TEXT); if(f){ - if(OutInfo.strFilename.GetLength()>0){ + if(!OutInfo.strFilename.empty()){ fclose(OutInfo.f); } - if(bVerbose){ + if(nVerbosity>=TRACE_LEVEL_TRACE){ _ftprintf(stderr,_T("Output -> %s (%08x)\n"),pszFilename,(unsigned int)f); } OutInfo.f=f; @@ -75,9 +75,9 @@ bool CeCosTrace::SetOutput(LPCTSTR pszFi bool CeCosTrace::SetError(LPCTSTR pszFilename) { - FILE *f=_tfopen(pszFilename,_T("at")); + FILE *f=_tfopen(pszFilename,_T("a") MODE_TEXT); if(f){ - if(ErrInfo.strFilename.GetLength()>0){ + if(!ErrInfo.strFilename.empty()){ fclose(ErrInfo.f); } ErrInfo.f=f; @@ -92,14 +92,14 @@ void CALLBACK CeCosTrace::StreamInfoFunc StreamInfo *pInfo=(StreamInfo *)pParam; ENTERCRITICAL; _fputts(psz,pInfo->f); - if(pInfo->strFilename.GetLength()>0 && Now()-pInfo->tLastReopen>20*1000){ + if(!pInfo->strFilename.empty() && Now()-pInfo->tLastReopen>20*1000){ // SAMBA clients will not honor fflush(), so we do this: fclose(pInfo->f); do { - pInfo->f=_tfopen(pInfo->strFilename,_T("at")); + pInfo->f=_tfopen(pInfo->strFilename,_T("a") MODE_TEXT); if(NULL==pInfo->f){ _ftprintf(stderr,_T("Failed to reopen %s\n"),(LPCTSTR)pInfo->strFilename); - Sleep(1000); + CeCosThreadUtils::Sleep(1000); } } while (NULL==pInfo->f); pInfo->tLastReopen=Now(); @@ -109,19 +109,7 @@ void CALLBACK CeCosTrace::StreamInfoFunc LEAVECRITICAL; } -void CeCosTrace::Trace(LPCTSTR pszFormat, ...) -{ - if(bVerbose){ - va_list marker; - va_start (marker, pszFormat); - String str; - str.vFormat(pszFormat,marker); - va_end (marker); - Error(_T("%s"),(LPCTSTR)str); - } -} - -void CeCosTrace::Error(LPCTSTR pszFormat, ...) +void CeCosTrace::TimeStampedErr(LPCTSTR pszFormat,...) { va_list marker; va_start (marker, pszFormat); @@ -129,18 +117,19 @@ void CeCosTrace::Error(LPCTSTR pszFormat str.vFormat(pszFormat,marker); va_end (marker); + Err(String::SFormat(_T("%s %s"),(LPCTSTR)Timestamp(),(LPCTSTR)str)); +} + +const String CeCosTrace::Timestamp() +{ time_t ltime; time(<ime); struct tm *now=localtime( <ime ); - String s; - CeCosThreadUtils::THREAD_ID id=CeCosThreadUtils::GetThreadId(); - s.Format(_T("[%x %s %02d:%02d:%02d%s] %s"),id, - arpszDow[now->tm_wday],now->tm_hour,now->tm_min,now->tm_sec,CeCosThreadUtils::CS::nCSOwner==id?_T("*"):_T(""),(LPCTSTR)str); - if(_TCHAR('\n')!=s[s.GetLength()-1]){ - s+=_TCHAR('\n'); - } - Err(s); + bool bInCriticalSection=CeCosThreadUtils::CS::InCriticalSection(); + TCHAR c1=bInCriticalSection?_TCHAR('<'):_TCHAR('['); + TCHAR c2=bInCriticalSection?_TCHAR('>'):_TCHAR(']'); + return String::SFormat(_T("%c%3x %s %02d:%02d:%02d%c"),c1,CeCosThreadUtils::GetThreadId(), + arpszDow[now->tm_wday],now->tm_hour,now->tm_min,now->tm_sec,c2); + } - -
