1
0
Fork 0

Add backtraces to FATAL exits.

This commit is contained in:
Willi Goesgens 2015-04-16 10:21:48 +02:00
parent 48e3131ad0
commit 77233f9b94
1 changed files with 76 additions and 50 deletions

View File

@ -266,9 +266,18 @@ void CLEANUP_LOGGING_AND_EXIT_ON_FATAL_ERROR (void);
#define LOG_FATAL_AND_EXIT(...) \
do { \
LOG_ARG_CHECK(__VA_ARGS__) \
LOG_ARG_CHECK(__VA_ARGS__); \
if (TRI_IsHumanLogging() && TRI_IsFatalLogging()) { \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, TRI_LOG_LEVEL_FATAL, TRI_LOG_SEVERITY_HUMAN, __VA_ARGS__); \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, \
TRI_LOG_LEVEL_FATAL, \
TRI_LOG_SEVERITY_HUMAN, \
__VA_ARGS__); \
std::string bt; \
TRI_GetBacktrace(bt); \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, \
TRI_LOG_LEVEL_ERROR, \
TRI_LOG_SEVERITY_HUMAN, \
"%s", bt.c_str()); \
} \
CLEANUP_LOGGING_AND_EXIT_ON_FATAL_ERROR(); \
} while (0)
@ -290,9 +299,11 @@ void CLEANUP_LOGGING_AND_EXIT_ON_FATAL_ERROR (void);
#define LOG_ERROR(...) \
do { \
LOG_ARG_CHECK(__VA_ARGS__) \
LOG_ARG_CHECK(__VA_ARGS__); \
if (TRI_IsHumanLogging() && TRI_IsErrorLogging()) { \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, TRI_LOG_LEVEL_ERROR, TRI_LOG_SEVERITY_HUMAN, __VA_ARGS__); \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, \
TRI_LOG_LEVEL_ERROR, \
TRI_LOG_SEVERITY_HUMAN, __VA_ARGS__); \
} \
} while (0)
@ -314,7 +325,10 @@ void CLEANUP_LOGGING_AND_EXIT_ON_FATAL_ERROR (void);
do { \
LOG_ARG_CHECK(__VA_ARGS__) \
if (TRI_IsHumanLogging() && TRI_IsWarningLogging()) { \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, TRI_LOG_LEVEL_WARNING, TRI_LOG_SEVERITY_HUMAN, __VA_ARGS__); \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, \
TRI_LOG_LEVEL_WARNING, \
TRI_LOG_SEVERITY_HUMAN, \
__VA_ARGS__); \
} \
} while (0)
@ -334,9 +348,12 @@ void CLEANUP_LOGGING_AND_EXIT_ON_FATAL_ERROR (void);
#define LOG_INFO(...) \
do { \
LOG_ARG_CHECK(__VA_ARGS__) \
LOG_ARG_CHECK(__VA_ARGS__); \
if (TRI_IsHumanLogging() && TRI_IsInfoLogging()) { \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, TRI_LOG_LEVEL_INFO, TRI_LOG_SEVERITY_HUMAN, __VA_ARGS__); \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, \
TRI_LOG_LEVEL_INFO, \
TRI_LOG_SEVERITY_HUMAN, \
__VA_ARGS__); \
} \
} while (0)
@ -356,9 +373,12 @@ void CLEANUP_LOGGING_AND_EXIT_ON_FATAL_ERROR (void);
#define LOG_DEBUG(...) \
do { \
LOG_ARG_CHECK(__VA_ARGS__) \
LOG_ARG_CHECK(__VA_ARGS__); \
if (TRI_IsHumanLogging() && TRI_IsDebugLogging(__FILE__)) { \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, TRI_LOG_LEVEL_DEBUG, TRI_LOG_SEVERITY_HUMAN, __VA_ARGS__); \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, \
TRI_LOG_LEVEL_DEBUG, \
TRI_LOG_SEVERITY_HUMAN, \
__VA_ARGS__); \
} \
} while (0)
@ -376,9 +396,12 @@ void CLEANUP_LOGGING_AND_EXIT_ON_FATAL_ERROR (void);
#define LOG_TRACE(...) \
do { \
LOG_ARG_CHECK(__VA_ARGS__) \
LOG_ARG_CHECK(__VA_ARGS__); \
if (TRI_IsHumanLogging() && TRI_IsTraceLogging(__FILE__)) { \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, TRI_LOG_LEVEL_TRACE, TRI_LOG_SEVERITY_HUMAN, __VA_ARGS__); \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, \
TRI_LOG_LEVEL_TRACE, \
TRI_LOG_SEVERITY_HUMAN, \
__VA_ARGS__); \
} \
} while (0)
@ -398,9 +421,12 @@ void CLEANUP_LOGGING_AND_EXIT_ON_FATAL_ERROR (void);
#define LOG_USAGE(...) \
do { \
LOG_ARG_CHECK(__VA_ARGS__) \
LOG_ARG_CHECK(__VA_ARGS__); \
if (TRI_IsUsageLogging()) { \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, TRI_LOG_LEVEL_INFO, TRI_LOG_SEVERITY_USAGE, __VA_ARGS__); \
TRI_Log(__FUNCTION__, __FILE__, __LINE__, \
TRI_LOG_LEVEL_INFO, \
TRI_LOG_SEVERITY_USAGE, \
__VA_ARGS__); \
} \
} while (0)