Merge pull request #26962 from ClickHouse/print-exception-from-terminate-in-separate-lines

Print trace from std::terminate exception line-by-line to make it grep easier
This commit is contained in:
alexey-milovidov 2021-07-30 09:21:37 +03:00 committed by GitHub
commit ec97695257
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -259,10 +259,25 @@ private:
Poco::Logger * log; Poco::Logger * log;
BaseDaemon & daemon; BaseDaemon & daemon;
void onTerminate(const std::string & message, UInt32 thread_num) const void onTerminate(std::string_view message, UInt32 thread_num) const
{ {
size_t pos = message.find('\n');
LOG_FATAL(log, "(version {}{}, {}) (from thread {}) {}", LOG_FATAL(log, "(version {}{}, {}) (from thread {}) {}",
VERSION_STRING, VERSION_OFFICIAL, daemon.build_id_info, thread_num, message); VERSION_STRING, VERSION_OFFICIAL, daemon.build_id_info, thread_num, message.substr(0, pos));
/// Print trace from std::terminate exception line-by-line to make it easy for grep.
while (pos != std::string_view::npos)
{
++pos;
size_t next_pos = message.find('\n', pos);
size_t size = next_pos;
if (next_pos != std::string_view::npos)
size = next_pos - pos;
LOG_FATAL(log, "{}", message.substr(pos, size));
pos = next_pos;
}
} }
void onFault( void onFault(