145 #include "vtkSetGet.h" 149 #if defined(_MSC_VER) 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* 177 VERBOSITY_INVALID = -10,
182 VERBOSITY_ERROR = -2,
183 VERBOSITY_WARNING = -1,
203 VERBOSITY_TRACE = +9,
241 static void Init(
int& argc,
char* argv[],
const char* verbosity_flag =
"-v");
251 static void SetStderrVerbosity(Verbosity
level);
269 static void LogToFile(
const char* path, FileMode filemode, Verbosity verbosity);
274 static void EndLogToFile(
const char* path);
332 static bool RemoveCallback(
const char*
id);
337 static bool IsEnabled();
344 static Verbosity GetCurrentVerbosityCutoff();
368 static void Log(
Verbosity verbosity,
const char* fname,
unsigned int lineno,
const char* txt);
369 static void StartScope(
370 Verbosity verbosity,
const char*
id,
const char* fname,
unsigned int lineno);
371 static void EndScope(
const char*
id);
372 #if !defined(__WRAP__) 373 static void LogF(
Verbosity verbosity,
const char* fname,
unsigned int lineno,
375 static
void StartScopeF(
Verbosity verbosity, const
char*
id, const
char* fname,
385 #if defined(_MSC_VER) && _MSC_VER > 1800 388 : Internals(other.Internals)
390 other.Internals =
nullptr;
400 LSInternals* Internals;
428 #define vtkVLogF(level, ...) \ 429 ((level) > vtkLogger::GetCurrentVerbosityCutoff()) \ 431 : vtkLogger::LogF(level, __FILE__, __LINE__, __VA_ARGS__) 432 #define vtkLogF(verbosity_name, ...) vtkVLogF(vtkLogger::VERBOSITY_##verbosity_name, __VA_ARGS__) 433 #define vtkVLog(level, x) \ 434 if ((level) <= vtkLogger::GetCurrentVerbosityCutoff()) \ 436 vtkOStrStreamWrapper::EndlType endl; \ 437 vtkOStrStreamWrapper::UseEndl(endl); \ 438 vtkOStrStreamWrapper vtkmsg; \ 440 vtkLogger::Log(level, __FILE__, __LINE__, vtkmsg.str()); \ 441 vtkmsg.rdbuf()->freeze(0); \ 443 #define vtkLog(verbosity_name, x) vtkVLog(vtkLogger::VERBOSITY_##verbosity_name, x) 459 #define vtkVLogIfF(level, cond, ...) \ 460 ((level) > vtkLogger::GetCurrentVerbosityCutoff() || (cond) == false) \ 462 : vtkLogger::LogF(level, __FILE__, __LINE__, __VA_ARGS__) 464 #define vtkLogIfF(verbosity_name, cond, ...) \ 465 vtkVLogIfF(vtkLogger::VERBOSITY_##verbosity_name, cond, __VA_ARGS__) 467 #define vtkVLogIf(level, cond, x) \ 468 if ((level) <= vtkLogger::GetCurrentVerbosityCutoff() && (cond)) \ 470 vtkOStrStreamWrapper::EndlType endl; \ 471 vtkOStrStreamWrapper::UseEndl(endl); \ 472 vtkOStrStreamWrapper vtkmsg; \ 474 vtkLogger::Log(level, __FILE__, __LINE__, vtkmsg.str()); \ 475 vtkmsg.rdbuf()->freeze(0); \ 477 #define vtkLogIf(verbosity_name, cond, x) vtkVLogIf(vtkLogger::VERBOSITY_##verbosity_name, cond, x) 480 #define VTKLOG_CONCAT_IMPL(s1, s2) s1##s2 481 #define VTKLOG_CONCAT(s1, s2) VTKLOG_CONCAT_IMPL(s1, s2) 482 #define VTKLOG_ANONYMOUS_VARIABLE(x) VTKLOG_CONCAT(x, __LINE__) 484 #define vtkVLogScopeF(level, ...) \ 485 auto VTKLOG_ANONYMOUS_VARIABLE(msg_context) = ((level) > vtkLogger::GetCurrentVerbosityCutoff()) \ 486 ? vtkLogger::LogScopeRAII() \ 487 : vtkLogger::LogScopeRAII(level, __FILE__, __LINE__, __VA_ARGS__) 489 #define vtkLogScopeF(verbosity_name, ...) \ 490 vtkVLogScopeF(vtkLogger::VERBOSITY_##verbosity_name, __VA_ARGS__) 492 #define vtkLogScopeFunction(verbosity_name) vtkLogScopeF(verbosity_name, "%s", __func__) 493 #define vtkVLogScopeFunction(level) vtkVLogScopeF(level, "%s", __func__) 500 #define vtkLogStartScope(verbosity_name, id) \ 501 vtkLogger::StartScope(vtkLogger::VERBOSITY_##verbosity_name, id, __FILE__, __LINE__) 502 #define vtkLogEndScope(id) vtkLogger::EndScope(id) 504 #define vtkLogStartScopeF(verbosity_name, id, ...) \ 505 vtkLogger::StartScopeF(vtkLogger::VERBOSITY_##verbosity_name, id, __FILE__, __LINE__, __VA_ARGS__) 507 #define vtkVLogStartScope(level, id) vtkLogger::StartScope(level, id, __FILE__, __LINE__) 508 #define vtkVLogStartScopeF(level, id, ...) \ 509 vtkLogger::StartScopeF(level, id, __FILE__, __LINE__, __VA_ARGS__) 517 #define vtkLogIdentifier(vtkobject) vtkLogger::GetIdentifier(vtkobject).c_str()
The message structure that is passed to custom callbacks registered using vtkLogger::AddCallback.
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.
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)
abstract base class for most VTK objects
void(*)(void *user_data, const Message &message) LogHandlerCallbackT
Callback handle types.
#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...