xgboost/src/logging.cc
Rong Ou 668b8a0ea4
[Breaking] Switch from rabit to the collective communicator (#8257)
* Switch from rabit to the collective communicator

* fix size_t specialization

* really fix size_t

* try again

* add include

* more include

* fix lint errors

* remove rabit includes

* fix pylint error

* return dict from communicator context

* fix communicator shutdown

* fix dask test

* reset communicator mocklist

* fix distributed tests

* do not save device communicator

* fix jvm gpu tests

* add python test for federated communicator

* Update gputreeshap submodule

Co-authored-by: Hyunsu Philip Cho <chohyu01@cs.washington.edu>
2022-10-05 14:39:01 -08:00

107 lines
2.8 KiB
C++

/*!
* Copyright 2015-2018 by Contributors
* \file logging.cc
* \brief Implementation of loggers.
* \author Tianqi Chen
*/
#include <iostream>
#include "xgboost/parameter.h"
#include "xgboost/logging.h"
#include "collective/communicator-inl.h"
#if !defined(XGBOOST_STRICT_R_MODE) || XGBOOST_STRICT_R_MODE == 0
// Override logging mechanism for non-R interfaces
void dmlc::CustomLogMessage::Log(const std::string& msg) {
const xgboost::LogCallbackRegistry *registry =
xgboost::LogCallbackRegistryStore::Get();
auto callback = registry->Get();
callback(msg.c_str());
}
namespace xgboost {
ConsoleLogger::~ConsoleLogger() {
if (ShouldLog(cur_verbosity_)) {
dmlc::CustomLogMessage::Log(BaseLogger::log_stream_.str());
}
}
TrackerLogger::~TrackerLogger() {
log_stream_ << '\n';
collective::Print(log_stream_.str());
}
} // namespace xgboost
#endif // !defined(XGBOOST_STRICT_R_MODE) || XGBOOST_STRICT_R_MODE == 0
namespace xgboost {
bool ConsoleLogger::ShouldLog(LogVerbosity verbosity) {
return static_cast<int>(verbosity) <=
(GlobalConfigThreadLocalStore::Get()->verbosity) ||
verbosity == LV::kIgnore;
}
void ConsoleLogger::Configure(Args const& args) {
auto& param = *GlobalConfigThreadLocalStore::Get();
param.UpdateAllowUnknown(args);
}
ConsoleLogger::LogVerbosity ConsoleLogger::DefaultVerbosity() {
return LogVerbosity::kWarning;
}
ConsoleLogger::LogVerbosity ConsoleLogger::GlobalVerbosity() {
LogVerbosity global_verbosity { LogVerbosity::kWarning };
switch (GlobalConfigThreadLocalStore::Get()->verbosity) {
case 0:
global_verbosity = LogVerbosity::kSilent;
break;
case 1:
global_verbosity = LogVerbosity::kWarning;
break;
case 2:
global_verbosity = LogVerbosity::kInfo;
break;
case 3:
global_verbosity = LogVerbosity::kDebug;
default:
// global verbosity doesn't require kIgnore
break;
}
return global_verbosity;
}
ConsoleLogger::ConsoleLogger(LogVerbosity cur_verb) :
cur_verbosity_{cur_verb} {}
ConsoleLogger::ConsoleLogger(
const std::string& file, int line, LogVerbosity cur_verb) {
cur_verbosity_ = cur_verb;
switch (cur_verbosity_) {
case LogVerbosity::kWarning:
BaseLogger::log_stream_ << "WARNING: "
<< file << ":" << line << ": ";
break;
case LogVerbosity::kDebug:
BaseLogger::log_stream_ << "DEBUG: "
<< file << ":" << line << ": ";
break;
case LogVerbosity::kInfo:
BaseLogger::log_stream_ << "INFO: "
<< file << ":" << line << ": ";
break;
case LogVerbosity::kIgnore:
BaseLogger::log_stream_ << file << ":" << line << ": ";
break;
case LogVerbosity::kSilent:
break;
}
}
} // namespace xgboost