162 #include "vtkSetGet.h"
166 #if defined(_MSC_VER)
171 #if defined(__clang__) || defined(__GNUC__)
174 #define VTK_PRINTF_LIKE(fmtarg, firstvararg) \
175 __attribute__((__format__(__printf__, fmtarg, firstvararg)))
176 #define VTK_FORMAT_STRING_TYPE const char*
177 #elif defined(_MSC_VER)
178 #define VTK_PRINTF_LIKE(fmtarg, firstvararg)
179 #define VTK_FORMAT_STRING_TYPE _In_z_ _Printf_format_string_ const char*
181 #define VTK_PRINTF_LIKE(fmtarg, firstvararg)
182 #define VTK_FORMAT_STRING_TYPE const char*
185 VTK_ABI_NAMESPACE_BEGIN
195 VERBOSITY_INVALID = -10,
200 VERBOSITY_ERROR = -2,
201 VERBOSITY_WARNING = -1,
221 VERBOSITY_TRACE = +9,
264 static void Init(
int& argc,
char* argv[],
const char* verbosity_flag =
"-v");
274 static void SetStderrVerbosity(Verbosity
level);
282 static void SetInternalVerbosityLevel(Verbosity
level);
300 static void LogToFile(
const char* path, FileMode filemode, Verbosity verbosity);
305 static void EndLogToFile(
const char* path);
363 static bool RemoveCallback(
const char*
id);
368 static bool IsEnabled();
375 static Verbosity GetCurrentVerbosityCutoff();
391 static Verbosity ConvertToVerbosity(
const char* text);
401 static void StartScope(
403 static void EndScope(
const char*
id);
404 #if !defined(__WRAP__)
417 #if defined(_MSC_VER) && _MSC_VER > 1800
419 LogScopeRAII(LogScopeRAII&& other)
420 : Internals(other.Internals)
422 other.Internals =
nullptr;
425 LogScopeRAII(LogScopeRAII&&) =
default;
429 LogScopeRAII(
const LogScopeRAII&) =
delete;
430 void operator=(
const LogScopeRAII&) =
delete;
432 LSInternals* Internals;
476 #define vtkVLogF(level, ...) \
477 ((level) > vtkLogger::GetCurrentVerbosityCutoff()) \
479 : vtkLogger::LogF(level, __FILE__, __LINE__, __VA_ARGS__)
480 #define vtkLogF(verbosity_name, ...) vtkVLogF(vtkLogger::VERBOSITY_##verbosity_name, __VA_ARGS__)
481 #define vtkVLog(level, x) \
484 if ((level) <= vtkLogger::GetCurrentVerbosityCutoff()) \
486 vtkOStrStreamWrapper::EndlType const endl; \
487 vtkOStrStreamWrapper::UseEndl(endl); \
488 vtkOStrStreamWrapper vtkmsg; \
490 vtkLogger::Log(level, __FILE__, __LINE__, vtkmsg.str()); \
491 vtkmsg.rdbuf()->freeze(0); \
494 #define vtkLog(verbosity_name, x) vtkVLog(vtkLogger::VERBOSITY_##verbosity_name, x)
510 #define vtkVLogIfF(level, cond, ...) \
511 ((level) > vtkLogger::GetCurrentVerbosityCutoff() || (cond) == false) \
513 : vtkLogger::LogF(level, __FILE__, __LINE__, __VA_ARGS__)
515 #define vtkLogIfF(verbosity_name, cond, ...) \
516 vtkVLogIfF(vtkLogger::VERBOSITY_##verbosity_name, cond, __VA_ARGS__)
518 #define vtkVLogIf(level, cond, x) \
521 if ((level) <= vtkLogger::GetCurrentVerbosityCutoff() && (cond)) \
523 vtkOStrStreamWrapper::EndlType endl; \
524 vtkOStrStreamWrapper::UseEndl(endl); \
525 vtkOStrStreamWrapper vtkmsg; \
527 vtkLogger::Log(level, __FILE__, __LINE__, vtkmsg.str()); \
528 vtkmsg.rdbuf()->freeze(0); \
531 #define vtkLogIf(verbosity_name, cond, x) vtkVLogIf(vtkLogger::VERBOSITY_##verbosity_name, cond, x)
534 #define VTKLOG_CONCAT_IMPL(s1, s2) s1##s2
535 #define VTKLOG_CONCAT(s1, s2) VTKLOG_CONCAT_IMPL(s1, s2)
536 #define VTKLOG_ANONYMOUS_VARIABLE(x) VTKLOG_CONCAT(x, __LINE__)
538 #define vtkVLogScopeF(level, ...) \
539 auto VTKLOG_ANONYMOUS_VARIABLE(msg_context) = ((level) > vtkLogger::GetCurrentVerbosityCutoff()) \
540 ? vtkLogger::LogScopeRAII() \
541 : vtkLogger::LogScopeRAII(level, __FILE__, __LINE__, __VA_ARGS__)
543 #define vtkLogScopeF(verbosity_name, ...) \
544 vtkVLogScopeF(vtkLogger::VERBOSITY_##verbosity_name, __VA_ARGS__)
546 #define vtkLogScopeFunction(verbosity_name) vtkLogScopeF(verbosity_name, "%s", __func__)
547 #define vtkVLogScopeFunction(level) vtkVLogScopeF(level, "%s", __func__)
554 #define vtkLogStartScope(verbosity_name, id) \
555 vtkLogger::StartScope(vtkLogger::VERBOSITY_##verbosity_name, id, __FILE__, __LINE__)
556 #define vtkLogEndScope(id) vtkLogger::EndScope(id)
558 #define vtkLogStartScopeF(verbosity_name, id, ...) \
559 vtkLogger::StartScopeF(vtkLogger::VERBOSITY_##verbosity_name, id, __FILE__, __LINE__, __VA_ARGS__)
561 #define vtkVLogStartScope(level, id) vtkLogger::StartScope(level, id, __FILE__, __LINE__)
562 #define vtkVLogStartScopeF(level, id, ...) \
563 vtkLogger::StartScopeF(level, id, __FILE__, __LINE__, __VA_ARGS__)
571 #define vtkLogIdentifier(vtkobject) vtkLogger::GetIdentifier(vtkobject).c_str()
573 VTK_ABI_NAMESPACE_END
The message structure that is passed to custom callbacks registered using vtkLogger::AddCallback.
static bool EnableSigabrtHandler
static bool EnableSigbusHandler
void(*)(void *user_data) CloseHandlerCallbackT
Callback handle types.
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
void(*)(void *user_data) FlushHandlerCallbackT
Callback handle types.
static bool EnableSigsegvHandler
logging framework for use in VTK and in applications based on VTK
a simple class to control print indentation
#define VTK_PRINTF_LIKE(fmtarg, firstvararg)
static bool EnableSigfpeHandler
abstract base class for most VTK objects
void(*)(void *user_data, const Message &message) LogHandlerCallbackT
Callback handle types.
static bool EnableSigtermHandler
static bool EnableSigillHandler
static bool EnableUnsafeSignalHandler
Flag to enable/disable the logging frameworks printing of a stack trace when catching signals...
static bool EnableSigintHandler
#define VTK_FORMAT_STRING_TYPE
void operator=(const vtkObjectBase &)
FileMode
Support log file modes: TRUNCATE truncates the file clearing any existing contents while APPEND appen...