Medial Code Documentation
Loading...
Searching...
No Matches
logging.h
Go to the documentation of this file.
1
8#ifndef XGBOOST_LOGGING_H_
9#define XGBOOST_LOGGING_H_
10
11#include <dmlc/logging.h>
12#include <dmlc/thread_local.h>
13
14#include <xgboost/base.h>
15#include <xgboost/parameter.h>
17
18#include <sstream>
19#include <map>
20#include <string>
21#include <utility>
22#include <vector>
23
24namespace xgboost {
25
27 public:
28 BaseLogger() {
29#if XGBOOST_LOG_WITH_TIME
30 log_stream_ << "[" << dmlc::DateLogger().HumanDate() << "] ";
31#endif // XGBOOST_LOG_WITH_TIME
32 }
33 std::ostream& stream() { return log_stream_; } // NOLINT
34
35 protected:
36 std::ostringstream log_stream_;
37};
38
39class ConsoleLogger : public BaseLogger {
40 public:
41 enum class LogVerbosity {
42 kSilent = 0,
43 kWarning = 1,
44 kInfo = 2, // information may interests users.
45 kDebug = 3, // information only interesting to developers.
46 kIgnore = 4 // ignore global setting
47 };
48 using LV = LogVerbosity;
49
50 private:
51 LogVerbosity cur_verbosity_;
52
53 public:
54 static void Configure(Args const& args);
55
56 static LogVerbosity GlobalVerbosity();
57 static LogVerbosity DefaultVerbosity();
58 static bool ShouldLog(LogVerbosity verbosity);
59
60 ConsoleLogger() = delete;
61 explicit ConsoleLogger(LogVerbosity cur_verb);
62 ConsoleLogger(const std::string& file, int line, LogVerbosity cur_verb);
64};
65
66class TrackerLogger : public BaseLogger {
67 public:
69};
70
71// custom logging callback; disabled for R wrapper
72#if !defined(XGBOOST_STRICT_R_MODE) || XGBOOST_STRICT_R_MODE == 0
74 public:
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;
80 }
81 inline Callback Get() const {
82 return log_callback_;
83 }
84 private:
85 Callback log_callback_;
86};
87#else
89 public:
90 using Callback = void (*)(const char*);
92 inline void Register(Callback log_callback) {}
93 inline Callback Get() const {
94 return nullptr;
95 }
96};
97#endif // !defined(XGBOOST_STRICT_R_MODE) || XGBOOST_STRICT_R_MODE == 0
98
99using LogCallbackRegistryStore = dmlc::ThreadLocalStore<LogCallbackRegistry>;
100
101// Redefines LOG_WARNING for controling verbosity
102#if defined(LOG_WARNING)
103#undef LOG_WARNING
104#endif // defined(LOG_WARNING)
105#define LOG_WARNING \
106 if (::xgboost::ConsoleLogger::ShouldLog( \
107 ::xgboost::ConsoleLogger::LV::kWarning)) \
108 ::xgboost::ConsoleLogger(__FILE__, __LINE__, \
109 ::xgboost::ConsoleLogger::LogVerbosity::kWarning)
110
111// Redefines LOG_INFO for controling verbosity
112#if defined(LOG_INFO)
113#undef LOG_INFO
114#endif // defined(LOG_INFO)
115#define LOG_INFO \
116 if (::xgboost::ConsoleLogger::ShouldLog( \
117 ::xgboost::ConsoleLogger::LV::kInfo)) \
118 ::xgboost::ConsoleLogger(__FILE__, __LINE__, \
119 ::xgboost::ConsoleLogger::LogVerbosity::kInfo)
120
121#if defined(LOG_DEBUG)
122#undef LOG_DEBUG
123#endif // defined(LOG_DEBUG)
124#define LOG_DEBUG \
125 if (::xgboost::ConsoleLogger::ShouldLog( \
126 ::xgboost::ConsoleLogger::LV::kDebug)) \
127 ::xgboost::ConsoleLogger(__FILE__, __LINE__, \
128 ::xgboost::ConsoleLogger::LogVerbosity::kDebug)
129
130// redefines the logging macro if not existed
131#ifndef LOG
132#define LOG(severity) LOG_##severity.stream()
133#endif // LOG
134
135// Enable LOG(CONSOLE) for print messages to console.
136#define LOG_CONSOLE ::xgboost::ConsoleLogger( \
137 ::xgboost::ConsoleLogger::LogVerbosity::kIgnore)
138// Enable LOG(TRACKER) for print messages to tracker
139#define LOG_TRACKER ::xgboost::TrackerLogger()
140
141#if defined(CHECK)
142#undef CHECK
143#define CHECK(cond) \
144 if (XGBOOST_EXPECT(!(cond), false)) \
145 dmlc::LogMessageFatal(__FILE__, __LINE__).stream() \
146 << "Check failed: " #cond << ": "
147#endif // defined(CHECK)
148
149} // namespace xgboost.
150#endif // XGBOOST_LOGGING_H_
Definition logging.h:289
A threadlocal store to store threadlocal variables. Will return a thread local singleton of type T.
Definition thread_local.h:35
Definition logging.h:26
Definition logging.h:39
Definition logging.h:73
Definition logging.h:66
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.