Если вы используете syslog(3)
, то это определяется как:
void syslog(int priority, const char *message, ...);
Либо вы хотите использовать printf
-подобную функциональность syslog
:
catch (const std::exception& e)
{
syslog(LOG_ERR, "exception: %s", e.what());
}
Или вы можете преобразовать std::string
в const char*
, используя функцию-член std::string::c_str
:
catch (const std::exception& e)
{
std::string message = std::string("exception: ") + e.what();
syslog(LOG_ERR, message.c_str());
}
Еще одно примечание, перехватывать по константной ссылке, иначе это хорошийвероятность того, что фактический брошенный объект исключения получит нарезанный .