8#ifndef XGBOOST_LOGGING_H_
9#define XGBOOST_LOGGING_H_
29#if XGBOOST_LOG_WITH_TIME
33 std::ostream& stream() {
return log_stream_; }
36 std::ostringstream log_stream_;
41 enum class LogVerbosity {
48 using LV = LogVerbosity;
51 LogVerbosity cur_verbosity_;
54 static void Configure(Args
const& args);
56 static LogVerbosity GlobalVerbosity();
57 static LogVerbosity DefaultVerbosity();
58 static bool ShouldLog(LogVerbosity verbosity);
62 ConsoleLogger(
const std::string& file,
int line, LogVerbosity cur_verb);
72#if !defined(XGBOOST_STRICT_R_MODE) || XGBOOST_STRICT_R_MODE == 0
75 using Callback = void (*)(
const char*);
77 : log_callback_([] (
const char* msg) { std::cerr << msg << std::endl; }) {}
78 inline void Register(Callback log_callback) {
79 this->log_callback_ = log_callback;
81 inline Callback Get()
const {
85 Callback log_callback_;
90 using Callback = void (*)(
const char*);
92 inline void Register(Callback log_callback) {}
93 inline Callback Get()
const {
102#if defined(LOG_WARNING)
106 if (::xgboost::ConsoleLogger::ShouldLog( \
107 ::xgboost::ConsoleLogger::LV::kWarning)) \
108 ::xgboost::ConsoleLogger(__FILE__, __LINE__, \
109 ::xgboost::ConsoleLogger::LogVerbosity::kWarning)
116 if (::xgboost::ConsoleLogger::ShouldLog( \
117 ::xgboost::ConsoleLogger::LV::kInfo)) \
118 ::xgboost::ConsoleLogger(__FILE__, __LINE__, \
119 ::xgboost::ConsoleLogger::LogVerbosity::kInfo)
121#if defined(LOG_DEBUG)
125 if (::xgboost::ConsoleLogger::ShouldLog( \
126 ::xgboost::ConsoleLogger::LV::kDebug)) \
127 ::xgboost::ConsoleLogger(__FILE__, __LINE__, \
128 ::xgboost::ConsoleLogger::LogVerbosity::kDebug)
132#define LOG(severity) LOG_##severity.stream()
136#define LOG_CONSOLE ::xgboost::ConsoleLogger( \
137 ::xgboost::ConsoleLogger::LogVerbosity::kIgnore)
139#define LOG_TRACKER ::xgboost::TrackerLogger()
144 if (XGBOOST_EXPECT(!(cond), false)) \
145 dmlc::LogMessageFatal(__FILE__, __LINE__).stream() \
146 << "Check failed: " #cond << ": "
A threadlocal store to store threadlocal variables. Will return a thread local singleton of type T.
Definition thread_local.h:35
defines logging macros of dmlc allows use of GLOG, fall back to internal implementation when disabled
Copyright 2020-2023, XGBoost Contributors.
Copyright 2015-2023 by XGBoost Contributors.
macro for using C++11 enum class as DMLC parameter
namespace of xgboost
Definition base.h:90
Portable thread local storage.