Add global configuration (#6414)
* Add management functions for global configuration: XGBSetGlobalConfig(), XGBGetGlobalConfig(). * Add Python interface: set_config(), get_config(), and config_context(). * Add unit tests for Python * Add R interface: xgb.set.config(), xgb.get.config() * Add unit tests for R Co-authored-by: Jiaming Yuan <jm.yuan@outlook.com>
This commit is contained in:
committed by
GitHub
parent
c2ba4fb957
commit
fb56da5e8b
@@ -11,12 +11,13 @@
|
||||
|
||||
#include "xgboost/parameter.h"
|
||||
#include "xgboost/logging.h"
|
||||
#include "xgboost/json.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();
|
||||
const xgboost::LogCallbackRegistry *registry =
|
||||
xgboost::LogCallbackRegistryStore::Get();
|
||||
auto callback = registry->Get();
|
||||
callback(msg.c_str());
|
||||
}
|
||||
@@ -40,35 +41,15 @@ TrackerLogger::~TrackerLogger() {
|
||||
|
||||
namespace xgboost {
|
||||
|
||||
DMLC_REGISTER_PARAMETER(ConsoleLoggerParam);
|
||||
|
||||
ConsoleLogger::LogVerbosity ConsoleLogger::global_verbosity_ =
|
||||
ConsoleLogger::DefaultVerbosity();
|
||||
|
||||
ConsoleLoggerParam ConsoleLogger::param_ = ConsoleLoggerParam();
|
||||
|
||||
bool ConsoleLogger::ShouldLog(LogVerbosity verbosity) {
|
||||
return verbosity <= global_verbosity_ || verbosity == LV::kIgnore;
|
||||
return static_cast<int>(verbosity) <=
|
||||
(GlobalConfigThreadLocalStore::Get()->verbosity) ||
|
||||
verbosity == LV::kIgnore;
|
||||
}
|
||||
|
||||
void ConsoleLogger::Configure(Args const& args) {
|
||||
param_.UpdateAllowUnknown(args);
|
||||
switch (param_.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;
|
||||
}
|
||||
auto& param = *GlobalConfigThreadLocalStore::Get();
|
||||
param.UpdateAllowUnknown(args);
|
||||
}
|
||||
|
||||
ConsoleLogger::LogVerbosity ConsoleLogger::DefaultVerbosity() {
|
||||
@@ -76,7 +57,25 @@ ConsoleLogger::LogVerbosity ConsoleLogger::DefaultVerbosity() {
|
||||
}
|
||||
|
||||
ConsoleLogger::LogVerbosity ConsoleLogger::GlobalVerbosity() {
|
||||
return global_verbosity_;
|
||||
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) :
|
||||
|
||||
Reference in New Issue
Block a user