162#include "vtkSetGet.h"
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*
185VTK_ABI_NAMESPACE_BEGIN
264 static void Init(
int& argc,
char* argv[],
const char* verbosity_flag =
"-v");
404#if !defined(__WRAP__)
417#if defined(_MSC_VER) && _MSC_VER > 1800
420 : Internals(other.Internals)
422 other.Internals =
nullptr;
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()
a simple class to control print indentation
LogScopeRAII(vtkLogger::Verbosity verbosity, const char *fname, unsigned int lineno, VTK_FORMAT_STRING_TYPE format,...) VTK_PRINTF_LIKE(5
LogScopeRAII(LogScopeRAII &&)=default
static bool EnableUnsafeSignalHandler
Flag to enable/disable the logging frameworks printing of a stack trace when catching signals,...
static bool EnableSigintHandler
static Verbosity ConvertToVerbosity(int value)
Convenience function to convert an integer to matching verbosity level.
static bool EnableSigtermHandler
static bool EnableSigsegvHandler
static bool EnableSigfpeHandler
static void Log(Verbosity verbosity, const char *fname, unsigned int lineno, const char *txt)
void(*)(void *user_data) CloseHandlerCallbackT
Callback handle types.
void(*)(void *user_data, const Message &message) LogHandlerCallbackT
Callback handle types.
static bool EnableSigabrtHandler
static bool RemoveCallback(const char *id)
Remove a callback using the id specified.
static void StartScope(Verbosity verbosity, const char *id, const char *fname, unsigned int lineno)
static std::string GetIdentifier(vtkObjectBase *obj)
Returns a printable string for a vtkObjectBase instance.
static void EndScope(const char *id)
vtkBaseTypeMacro(vtkLogger, vtkObjectBase)
static std::string GetThreadName()
Get/Set the name to identify the current thread in the log output.
static void LogF(Verbosity verbosity, const char *fname, unsigned int lineno, VTK_FORMAT_STRING_TYPE format,...) VTK_PRINTF_LIKE(4
static void SetInternalVerbosityLevel(Verbosity level)
Set internal messages verbosity level.
static void static void StartScopeF(Verbosity verbosity, const char *id, const char *fname, unsigned int lineno, VTK_FORMAT_STRING_TYPE format,...) VTK_PRINTF_LIKE(5
void(*)(void *user_data) FlushHandlerCallbackT
Callback handle types.
static void AddCallback(const char *id, LogHandlerCallbackT callback, void *user_data, Verbosity verbosity, CloseHandlerCallbackT on_close=nullptr, FlushHandlerCallbackT on_flush=nullptr)
Add a callback to call on each log message with a verbosity less or equal to the given one.
static bool IsEnabled()
Returns true if VTK is built with logging support enabled.
static void SetThreadName(const std::string &name)
Get/Set the name to identify the current thread in the log output.
static Verbosity ConvertToVerbosity(const char *text)
Convenience function to convert a string to matching verbosity level.
static bool EnableSigbusHandler
static void Init()
Initializes logging.
static void EndLogToFile(const char *path)
Stop logging to a file at the given path.
static void Init(int &argc, char *argv[], const char *verbosity_flag="-v")
Initializes logging.
static void SetStderrVerbosity(Verbosity level)
Set the verbosity level for the output logged to stderr.
FileMode
Support log file modes: TRUNCATE truncates the file clearing any existing contents while APPEND appen...
static Verbosity GetCurrentVerbosityCutoff()
Returns the maximum verbosity of all log outputs.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static bool EnableSigillHandler
static void LogToFile(const char *path, FileMode filemode, Verbosity verbosity)
Enable logging to a file at the given path.
void operator=(const vtkObjectBase &)
The message structure that is passed to custom callbacks registered using vtkLogger::AddCallback.
#define VTK_FORMAT_STRING_TYPE
#define VTK_PRINTF_LIKE(fmtarg, firstvararg)