Extract exception error info message.

Refs #6070
This commit is contained in:
Michael Friedrich 2014-05-22 14:41:27 +02:00
parent aaa6154fd7
commit 0713918c5e
4 changed files with 23 additions and 2 deletions

View File

@ -94,7 +94,8 @@ void IdoMysqlConnection::Pause(void)
void IdoMysqlConnection::ExceptionHandler(boost::exception_ptr exp)
{
Log(LogCritical, "db_ido_mysql", "Exception during database operation: " + DiagnosticInformation(exp));
Log(LogCritical, "db_ido_mysql", "Exception during database operation: '" + ErrorInformation(exp) + "'");
Log(LogDebug, "db_ido_mysql", "Exception during database operation: " + DiagnosticInformation(exp));
boost::mutex::scoped_lock lock(m_ConnectionMutex);

View File

@ -152,3 +152,12 @@ String icinga::DiagnosticInformation(boost::exception_ptr eptr)
return boost::diagnostic_information(eptr);
}
String icinga::ErrorInformation(boost::exception_ptr eptr)
{
try {
boost::rethrow_exception(eptr);
} catch (const std::exception& ex) {
return ex.what();
}
}

View File

@ -84,7 +84,18 @@ String DiagnosticInformation(const T& ex, StackTrace *stack = NULL, ContextTrace
return result.str();
}
template<typename T>
String ErrorInformation(const T& ex)
{
std::ostringstream result;
result << ex.what();
return result.str();
}
I2_BASE_API String DiagnosticInformation(boost::exception_ptr eptr);
I2_BASE_API String ErrorInformation(boost::exception_ptr eptr);
class I2_BASE_API posix_error : virtual public std::exception, virtual public boost::exception { };

View File

@ -181,7 +181,7 @@ void ApiListener::AddConnection(const String& node, const String& service)
Utility::QueueAsyncCallback(boost::bind(&ApiListener::NewClientHandler, this, client, RoleClient));
} catch (const std::exception& ex) {
std::ostringstream info, debug;
info << "Cannot connect to host '" << node << "' on port '" << service << "'.";
info << "Cannot connect to host '" << node << "' on port '" << service << "'";
debug << info << std::endl << DiagnosticInformation(ex);
Log(LogCritical, "remote", info.str());
Log(LogDebug, "remote", debug.str());