diff --git a/ftk/src/ftk.h b/ftk/src/ftk.h index b4fe93d..b304bc9 100644 --- a/ftk/src/ftk.h +++ b/ftk/src/ftk.h @@ -1372,6 +1372,9 @@ eLogMessageSeverity eMsgSeverity = F_DEBUG_MESSAGE) = 0; }; + void f_setLoggerClient( + IF_LoggerClient * pLogger); + /**************************************************************************** /// This is an abstract base class that allows an application to catch /// messages. The application must create an implementation for this class diff --git a/ftk/src/ftklog.cpp b/ftk/src/ftklog.cpp index 5ffc434..e292674 100644 --- a/ftk/src/ftklog.cpp +++ b/ftk/src/ftklog.cpp @@ -1430,3 +1430,51 @@ void F_Trace::outputCurrentText( m_pszDestStr = &m_szDestStr [0]; } } + +/**************************************************************************** +Desc: Initialize the toolkit logger +****************************************************************************/ +RCODE f_loggerInit( void) +{ + RCODE rc = NE_FLM_OK; + + if (RC_BAD( rc = f_mutexCreate( &gv_hLoggerMutex))) + { + goto Exit; + } + +Exit: + + return( rc); +} + +/**************************************************************************** +Desc: Shutdown the toolkit logger +****************************************************************************/ +void f_loggerShutdown( void) +{ + if (gv_pLogger) + { + gv_pLogger->Release(); + gv_pLogger = NULL; + } + if (gv_hLoggerMutex != F_MUTEX_NULL) + { + f_mutexDestroy( &gv_hLoggerMutex); + } +} + +void f_setLoggerClient( + IF_LoggerClient * pLogger) +{ + f_mutexLock( gv_hLoggerMutex); + if (gv_pLogger) + { + gv_pLogger->Release(); + } + if ((gv_pLogger = pLogger) != NULL) + { + gv_pLogger->AddRef(); + } + f_mutexUnlock( gv_hLoggerMutex); +} diff --git a/ftk/src/ftkmisc.cpp b/ftk/src/ftkmisc.cpp index 6df89f1..6fb009f 100644 --- a/ftk/src/ftkmisc.cpp +++ b/ftk/src/ftkmisc.cpp @@ -184,6 +184,13 @@ RCODE FLMAPI ftkStartup( void) setrlimit( RLIMIT_FSIZE, &rlim); #endif + + // Setup logger + + if (RC_BAD( rc = f_loggerInit())) + { + goto Exit; + } Exit: @@ -224,6 +231,8 @@ void FLMAPI ftkShutdown( void) { gv_pXml->Release(); } + + f_loggerShutdown(); f_freeRandomGenerator(); f_freeCharMappingTables(); diff --git a/ftk/src/ftksys.h b/ftk/src/ftksys.h index 9507e0e..7d40a6f 100644 --- a/ftk/src/ftksys.h +++ b/ftk/src/ftksys.h @@ -1512,6 +1512,13 @@ void flmDbgLogExit( void); void flmDbgLogFlush( void); + /**************************************************************************** + Desc: Logger client + ****************************************************************************/ + RCODE f_loggerInit( void); + + void f_loggerShutdown( void); + /**************************************************************************** Desc: Misc. ****************************************************************************/