145#include "vtkSetGet.h"  
  154#if defined(__clang__) || defined(__GNUC__) 
  157#define VTK_PRINTF_LIKE(fmtarg, firstvararg)                                                       \ 
  158  __attribute__((__format__(__printf__, fmtarg, firstvararg))) 
  159#define VTK_FORMAT_STRING_TYPE const char* 
  160#elif defined(_MSC_VER) 
  161#define VTK_PRINTF_LIKE(fmtarg, firstvararg) 
  162#define VTK_FORMAT_STRING_TYPE _In_z_ _Printf_format_string_ const char* 
  164#define VTK_PRINTF_LIKE(fmtarg, firstvararg) 
  165#define VTK_FORMAT_STRING_TYPE const char* 
  168VTK_ABI_NAMESPACE_BEGIN
 
  178    VERBOSITY_INVALID = -10, 
 
  183    VERBOSITY_ERROR = -2,
 
  184    VERBOSITY_WARNING = -1,
 
  204    VERBOSITY_TRACE = +9,
 
  247  static void Init(
int& argc, 
char* argv[], 
const char* verbosity_flag = 
"-v");
 
  387#if !defined(__WRAP__) 
  400#if defined(_MSC_VER) && _MSC_VER > 1800 
  403      : Internals(other.Internals)
 
  405      other.Internals = 
nullptr;
 
  415    LSInternals* Internals;
 
  452#define vtkVLogF(level, ...)                                                                       \ 
  453  ((level) > vtkLogger::GetCurrentVerbosityCutoff())                                               \ 
  455    : vtkLogger::LogF(level, __FILE__, __LINE__, __VA_ARGS__) 
  456#define vtkLogF(verbosity_name, ...) vtkVLogF(vtkLogger::VERBOSITY_##verbosity_name, __VA_ARGS__) 
  457#define vtkVLog(level, x)                                                                          \ 
  458  if ((level) <= vtkLogger::GetCurrentVerbosityCutoff())                                           \ 
  460    vtkOStrStreamWrapper::EndlType const endl;                                                     \ 
  461    vtkOStrStreamWrapper::UseEndl(endl);                                                           \ 
  462    vtkOStrStreamWrapper vtkmsg;                                                                   \ 
  464    vtkLogger::Log(level, __FILE__, __LINE__, vtkmsg.str());                                       \ 
  465    vtkmsg.rdbuf()->freeze(0);                                                                     \ 
  467#define vtkLog(verbosity_name, x) vtkVLog(vtkLogger::VERBOSITY_##verbosity_name, x) 
  483#define vtkVLogIfF(level, cond, ...)                                                               \ 
  484  ((level) > vtkLogger::GetCurrentVerbosityCutoff() || (cond) == false)                            \ 
  486    : vtkLogger::LogF(level, __FILE__, __LINE__, __VA_ARGS__) 
  488#define vtkLogIfF(verbosity_name, cond, ...)                                                       \ 
  489  vtkVLogIfF(vtkLogger::VERBOSITY_##verbosity_name, cond, __VA_ARGS__) 
  491#define vtkVLogIf(level, cond, x)                                                                  \ 
  492  if ((level) <= vtkLogger::GetCurrentVerbosityCutoff() && (cond))                                 \ 
  494    vtkOStrStreamWrapper::EndlType endl;                                                           \ 
  495    vtkOStrStreamWrapper::UseEndl(endl);                                                           \ 
  496    vtkOStrStreamWrapper vtkmsg;                                                                   \ 
  498    vtkLogger::Log(level, __FILE__, __LINE__, vtkmsg.str());                                       \ 
  499    vtkmsg.rdbuf()->freeze(0);                                                                     \ 
  501#define vtkLogIf(verbosity_name, cond, x) vtkVLogIf(vtkLogger::VERBOSITY_##verbosity_name, cond, x) 
  504#define VTKLOG_CONCAT_IMPL(s1, s2) s1##s2 
  505#define VTKLOG_CONCAT(s1, s2) VTKLOG_CONCAT_IMPL(s1, s2) 
  506#define VTKLOG_ANONYMOUS_VARIABLE(x) VTKLOG_CONCAT(x, __LINE__) 
  508#define vtkVLogScopeF(level, ...)                                                                  \ 
  509  auto VTKLOG_ANONYMOUS_VARIABLE(msg_context) = ((level) > vtkLogger::GetCurrentVerbosityCutoff()) \ 
  510    ? vtkLogger::LogScopeRAII()                                                                    \ 
  511    : vtkLogger::LogScopeRAII(level, __FILE__, __LINE__, __VA_ARGS__) 
  513#define vtkLogScopeF(verbosity_name, ...)                                                          \ 
  514  vtkVLogScopeF(vtkLogger::VERBOSITY_##verbosity_name, __VA_ARGS__) 
  516#define vtkLogScopeFunction(verbosity_name) vtkLogScopeF(verbosity_name, "%s", __func__) 
  517#define vtkVLogScopeFunction(level) vtkVLogScopeF(level, "%s", __func__) 
  524#define vtkLogStartScope(verbosity_name, id)                                                       \ 
  525  vtkLogger::StartScope(vtkLogger::VERBOSITY_##verbosity_name, id, __FILE__, __LINE__) 
  526#define vtkLogEndScope(id) vtkLogger::EndScope(id) 
  528#define vtkLogStartScopeF(verbosity_name, id, ...)                                                 \ 
  529  vtkLogger::StartScopeF(vtkLogger::VERBOSITY_##verbosity_name, id, __FILE__, __LINE__, __VA_ARGS__) 
  531#define vtkVLogStartScope(level, id) vtkLogger::StartScope(level, id, __FILE__, __LINE__) 
  532#define vtkVLogStartScopeF(level, id, ...)                                                         \ 
  533  vtkLogger::StartScopeF(level, id, __FILE__, __LINE__, __VA_ARGS__) 
  541#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
 
logging framework for use in VTK and in applications based on VTK
 
static bool EnableUnsafeSignalHandler
Flag to enable/disable the logging frameworks printing of a stack trace when catching signals,...
 
static Verbosity ConvertToVerbosity(int value)
Convenience function to convert an integer to matching verbosity level.
 
void(*)(void *user_data) CloseHandlerCallbackT
Callback handle types.
 
void(*)(void *user_data, const Message &message) LogHandlerCallbackT
Callback handle types.
 
static bool RemoveCallback(const char *id)
Remove a callback using the id specified.
 
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 SetInternalVerbosityLevel(Verbosity level)
Set internal messages verbosity level.
 
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 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 Log(Verbosity verbosity, VTK_FILEPATH const char *fname, unsigned int lineno, const char *txt)
 
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 void LogF(Verbosity verbosity, VTK_FILEPATH const char *fname, unsigned int lineno, VTK_FORMAT_STRING_TYPE format,...) VTK_PRINTF_LIKE(4
 
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 void StartScope(Verbosity verbosity, const char *id, VTK_FILEPATH const char *fname, unsigned int lineno)
 
static void LogToFile(const char *path, FileMode filemode, Verbosity verbosity)
Enable logging to a file at the given path.
 
abstract base class for most VTK objects
 
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)