fix logger_level_set()

This commit is contained in:
Michael Davidsaver
2021-05-05 19:23:30 -07:00
parent 5d64bca234
commit 3dcf2f59fe
3 changed files with 107 additions and 11 deletions
+18 -11
View File
@@ -189,24 +189,31 @@ struct logger_gbl_t {
if(lvl<=Level(0))
lvl = Level(1);
decltype (config)::value_type* conf = nullptr;
for(auto& tup : config) {
if(tup.first==exp) {
// update of existing config
if(tup.second!=lvl) {
tup.second = lvl;
for(auto& pair : loggers) {
if(epicsStrGlobMatch(pair.first.c_str(), tup.first.c_str())) {
pair.second->lvl.store(lvl, std::memory_order_relaxed);
}
}
}
return;
conf = &tup;
break;
}
}
// new config
config.emplace_back(exp, lvl);
if(!conf) {
config.emplace_back(exp, Level(-1));
conf = &config.back();
}
if(conf->second!=lvl) {
conf->second = lvl;
for(auto& pair : loggers) {
if(epicsStrGlobMatch(pair.first.c_str(), conf->first.c_str())) {
pair.second->lvl.store(lvl, std::memory_order_relaxed);
}
}
}
}
} *logger_gbl;