mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Logging: Skip identical messages logged close in time
There can be situations where multiple identical log messages are computed in a short time interval. Default time interval is set to 1 second, if the message is reported after this interval, the message is added to the log.
This commit is contained in:
parent
21f6cdbc1e
commit
b0344a1e72
@ -163,6 +163,42 @@ void RiaDefaultConsoleLogger::writeToConsole( const std::string& str )
|
||||
#endif
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaLogging::setLastMessage( const QString& message )
|
||||
{
|
||||
#pragma omp critical( critical_section_logging )
|
||||
{
|
||||
sm_lastMessage = message;
|
||||
sm_lastMessageTime = std::chrono::high_resolution_clock::now();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RiaLogging::isSameMessage( const QString& message )
|
||||
{
|
||||
bool isSame = false;
|
||||
|
||||
#pragma omp critical( critical_section_logging )
|
||||
{
|
||||
if ( message == sm_lastMessage )
|
||||
{
|
||||
auto now = std::chrono::high_resolution_clock::now();
|
||||
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>( now - sm_lastMessageTime );
|
||||
|
||||
if ( duration.count() < 1000 )
|
||||
{
|
||||
isSame = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return isSame;
|
||||
}
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
//
|
||||
@ -171,6 +207,8 @@ void RiaDefaultConsoleLogger::writeToConsole( const std::string& str )
|
||||
|
||||
std::vector<std::unique_ptr<RiaLogger>> RiaLogging::sm_logger;
|
||||
std::chrono::time_point<std::chrono::high_resolution_clock> RiaLogging::sm_startTime;
|
||||
QString RiaLogging::sm_lastMessage;
|
||||
std::chrono::time_point<std::chrono::high_resolution_clock> RiaLogging::sm_lastMessageTime;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@ -209,6 +247,8 @@ RILogLevel RiaLogging::logLevelBasedOnPreferences()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaLogging::error( const QString& message )
|
||||
{
|
||||
if ( isSameMessage( message ) ) return;
|
||||
|
||||
for ( const auto& logger : sm_logger )
|
||||
{
|
||||
if ( logger && logger->level() >= int( RILogLevel::RI_LL_ERROR ) )
|
||||
@ -217,6 +257,8 @@ void RiaLogging::error( const QString& message )
|
||||
logger->error( message.toLatin1().constData() );
|
||||
}
|
||||
}
|
||||
|
||||
setLastMessage( message );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -224,6 +266,8 @@ void RiaLogging::error( const QString& message )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaLogging::warning( const QString& message )
|
||||
{
|
||||
if ( isSameMessage( message ) ) return;
|
||||
|
||||
for ( const auto& logger : sm_logger )
|
||||
{
|
||||
if ( logger && logger->level() >= int( RILogLevel::RI_LL_WARNING ) )
|
||||
@ -232,6 +276,8 @@ void RiaLogging::warning( const QString& message )
|
||||
logger->warning( message.toLatin1().constData() );
|
||||
}
|
||||
}
|
||||
|
||||
setLastMessage( message );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -239,6 +285,8 @@ void RiaLogging::warning( const QString& message )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaLogging::info( const QString& message )
|
||||
{
|
||||
if ( isSameMessage( message ) ) return;
|
||||
|
||||
for ( const auto& logger : sm_logger )
|
||||
{
|
||||
if ( logger && logger->level() >= int( RILogLevel::RI_LL_INFO ) )
|
||||
@ -247,6 +295,8 @@ void RiaLogging::info( const QString& message )
|
||||
logger->info( message.toLatin1().constData() );
|
||||
}
|
||||
}
|
||||
|
||||
setLastMessage( message );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -254,6 +304,8 @@ void RiaLogging::info( const QString& message )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaLogging::debug( const QString& message )
|
||||
{
|
||||
if ( isSameMessage( message ) ) return;
|
||||
|
||||
for ( const auto& logger : sm_logger )
|
||||
{
|
||||
if ( logger && logger->level() >= int( RILogLevel::RI_LL_DEBUG ) )
|
||||
@ -262,6 +314,8 @@ void RiaLogging::debug( const QString& message )
|
||||
logger->debug( message.toLatin1().constData() );
|
||||
}
|
||||
}
|
||||
|
||||
setLastMessage( message );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -76,9 +76,15 @@ public:
|
||||
static void resetTimer( const QString& message );
|
||||
static void logTimeElapsed( const QString& message );
|
||||
|
||||
private:
|
||||
static void setLastMessage( const QString& message );
|
||||
static bool isSameMessage( const QString& message );
|
||||
|
||||
private:
|
||||
static std::vector<std::unique_ptr<RiaLogger>> sm_logger;
|
||||
static std::chrono::time_point<std::chrono::high_resolution_clock> sm_startTime;
|
||||
static QString sm_lastMessage;
|
||||
static std::chrono::time_point<std::chrono::high_resolution_clock> sm_lastMessageTime;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
|
Loading…
Reference in New Issue
Block a user