diff --git a/Framework/basic-aggregator.json b/Framework/basic-aggregator.json index cb1c5253e0..9812ae7e53 100644 --- a/Framework/basic-aggregator.json +++ b/Framework/basic-aggregator.json @@ -20,6 +20,10 @@ }, "conditionDB": { "url": "ccdb-test.cern.ch:8080" + }, + "infologger": { "": "Configuration of the Infologger (optional).", + "filterDiscardDebug": "false", "": "Set to 1 to discard debug and trace messages (default: false)", + "filterDiscardLevel": "21", "": "Message at this level or above are discarded (default: 21 - Trace)" } }, "tasks": { diff --git a/Framework/basic.json b/Framework/basic.json index de2e56359b..60343de585 100644 --- a/Framework/basic.json +++ b/Framework/basic.json @@ -20,6 +20,10 @@ }, "conditionDB": { "url": "ccdb-test.cern.ch:8080" + }, + "infologger": { "": "Configuration of the Infologger (optional).", + "filterDiscardDebug": "false", "": "Set to 1 to discard debug and trace messages (default: false)", + "filterDiscardLevel": "21", "": "Message at this level or above are discarded (default: 21 - Trace)" } }, "tasks": { diff --git a/Framework/include/QualityControl/QcInfoLogger.h b/Framework/include/QualityControl/QcInfoLogger.h index 36a8f72799..64ac908efa 100644 --- a/Framework/include/QualityControl/QcInfoLogger.h +++ b/Framework/include/QualityControl/QcInfoLogger.h @@ -18,6 +18,7 @@ #include #include +#include typedef AliceO2::InfoLogger::InfoLogger infologger; // not to have to type the full stuff each time typedef AliceO2::InfoLogger::InfoLoggerContext infoContext; @@ -50,6 +51,8 @@ class QcInfoLogger : public AliceO2::InfoLogger::InfoLogger } void setFacility(const std::string& facility); + void init(const std::string& facility, bool discardDebug = false, int discardFromLevel = 21 /* Discard Trace */); + void init(const std::string& facility, const boost::property_tree::ptree& config); private: QcInfoLogger(); diff --git a/Framework/src/AggregatorRunner.cxx b/Framework/src/AggregatorRunner.cxx index 56a4e391a5..98d90c959d 100644 --- a/Framework/src/AggregatorRunner.cxx +++ b/Framework/src/AggregatorRunner.cxx @@ -90,6 +90,7 @@ std::string AggregatorRunner::createAggregatorRunnerName() void AggregatorRunner::init(framework::InitContext&) { try { + ILOG_INST.init("aggregator", mConfigFile->getRecursive()); initDatabase(); initMonitoring(); initServiceDiscovery(); diff --git a/Framework/src/CheckRunner.cxx b/Framework/src/CheckRunner.cxx index 93b54d03df..32de622606 100644 --- a/Framework/src/CheckRunner.cxx +++ b/Framework/src/CheckRunner.cxx @@ -135,7 +135,6 @@ CheckRunner::CheckRunner(std::vector checks, std::string configurationSou mTotalNumberQOStored(0), mTotalNumberMOStored(0) { - ILOG_INST.setFacility("Check"); try { mConfigFile = ConfigurationFactory::getConfiguration(configurationSource); } catch (...) { @@ -177,6 +176,7 @@ CheckRunner::~CheckRunner() void CheckRunner::init(framework::InitContext&) { try { + ILOG_INST.init("check/" + mDeviceName, mConfigFile->getRecursive()); initDatabase(); initMonitoring(); initServiceDiscovery(); diff --git a/Framework/src/PostProcessingRunner.cxx b/Framework/src/PostProcessingRunner.cxx index 983a7f712c..2897f5d651 100644 --- a/Framework/src/PostProcessingRunner.cxx +++ b/Framework/src/PostProcessingRunner.cxx @@ -29,7 +29,6 @@ constexpr long objectValidity = 1000l * 60 * 60 * 24 * 365 * 10; PostProcessingRunner::PostProcessingRunner(std::string name) // : mName(name) { - ILOG_INST.setFacility("PostProcessing"); } void PostProcessingRunner::setPublicationCallback(MOCPublicationCallback callback) @@ -39,6 +38,7 @@ void PostProcessingRunner::setPublicationCallback(MOCPublicationCallback callbac void PostProcessingRunner::init(const boost::property_tree::ptree& config) { + ILOG_INST.init("post/" + mName, config); ILOG(Info, Support) << "Initializing PostProcessingRunner" << ENDM; mConfig = PostProcessingConfig(mName, config); diff --git a/Framework/src/QcInfoLogger.cxx b/Framework/src/QcInfoLogger.cxx index 7674d73f29..75715b76de 100644 --- a/Framework/src/QcInfoLogger.cxx +++ b/Framework/src/QcInfoLogger.cxx @@ -15,6 +15,7 @@ #include "QualityControl/QcInfoLogger.h" #include +#include namespace o2::quality_control::core { @@ -35,7 +36,32 @@ void QcInfoLogger::setFacility(const std::string& facility) context.setField(infoContext::FieldName::Facility, facility); context.setField(infoContext::FieldName::System, "QC"); this->setContext(context); - *this << LogDebugDevel << "Facility set to " << facility << ENDM; + *this << LogDebugDevel << "Facility set to old " << facility << ENDM; +} + +void QcInfoLogger::init(const std::string& facility, bool discardDebug, int discardFromLevel) +{ + // facility + infoContext context; + context.setField(infoContext::FieldName::Facility, facility); + context.setField(infoContext::FieldName::System, "QC"); + this->setContext(context); + *this << LogDebugDevel << "Facility set to new " << facility << ENDM; + + // discard + ILOG_INST.filterDiscardDebug(discardDebug); + ILOG_INST.filterDiscardLevel(discardFromLevel); + // we use cout because we might have just muted ourselves + std::cout << "Discard debug ? " << discardDebug << std::endl; + std::cout << "Discard from level " << discardFromLevel << std::endl; +} + +void QcInfoLogger::init(const std::string& facility, const boost::property_tree::ptree& config) +{ + std::string discardDebugStr = config.get("qc.config.infologger.filterDiscardDebug", "false"); + bool discardDebug = discardDebugStr == "true" ? 1 : 0; + int discardLevel = config.get("qc.config.infologger.filterDiscardLevel", 21 /* Discard Trace */); + init(facility, discardDebug, discardLevel); } } // namespace o2::quality_control::core diff --git a/Framework/src/TaskRunner.cxx b/Framework/src/TaskRunner.cxx index ec1d9f37a5..383ed6bc12 100644 --- a/Framework/src/TaskRunner.cxx +++ b/Framework/src/TaskRunner.cxx @@ -62,8 +62,6 @@ TaskRunner::TaskRunner(const std::string& taskName, const std::string& configura mRunNumber(0), mMonitorObjectsSpec({ "mo" }, createTaskDataOrigin(), createTaskDataDescription(taskName), id) { - ILOG_INST.setFacility("Task"); - // setup configuration try { mTaskConfig.taskName = taskName; @@ -80,6 +78,7 @@ TaskRunner::TaskRunner(const std::string& taskName, const std::string& configura void TaskRunner::init(InitContext& iCtx) { + ILOG_INST.init("task/" + mTaskConfig.taskName, mConfigFile->getRecursive()); ILOG(Info, Support) << "initializing TaskRunner" << ENDM; ILOG(Info, Support) << "Loading configuration" << ENDM; try { @@ -97,7 +96,7 @@ void TaskRunner::init(InitContext& iCtx) iCtx.services().get().set(CallbackService::Id::Reset, [this]() { reset(); }); // setup monitoring - std::string monitoringUrl = mConfigFile->get("qc.config.monitoring.url", "infologger:///debug?qc"); + auto monitoringUrl = mConfigFile->get("qc.config.monitoring.url", "infologger:///debug?qc"); mCollector = MonitoringFactory::Get(monitoringUrl); mCollector->enableProcessMonitoring(); mCollector->addGlobalTag(tags::Key::Subsystem, tags::Value::QC); @@ -175,16 +174,16 @@ CompletionPolicy::CompletionOp TaskRunner::completionPolicyCallback(o2::framewor } } - // ILOG(Debug, Trace) << "Completion policy callback. " - // << "Total inputs possible: " << inputs.size() - // << ", data inputs: " << dataInputsPresent - // << ", timer inputs: " << (action == CompletionPolicy::CompletionOp::Consume) << ENDM; + ILOG(Debug, Trace) << "Completion policy callback. " + << "Total inputs possible: " << inputs.size() + << ", data inputs: " << dataInputsPresent + << ", timer inputs: " << (action == CompletionPolicy::CompletionOp::Consume) << ENDM; if (dataInputsPresent == dataInputsExpected) { action = CompletionPolicy::CompletionOp::Consume; } - // ILOG(Debug, Trace) << "Action: " << action << ENDM; + ILOG(Debug, Trace) << "Action: " << action << ENDM; return action; } diff --git a/doc/Advanced.md b/doc/Advanced.md index dff2c2a8f7..41009e00e1 100644 --- a/doc/Advanced.md +++ b/doc/Advanced.md @@ -683,6 +683,10 @@ This is how a typical "config" structure looks like. Each configuration element "conditionDB": { "": ["Configuration of the Conditions and Calibration DataBase (CCDB).", "Do not mistake with the CCDB which is used as QC repository."], "url": "ccdb-test.cern.ch:8080", "": "URL of a CCDB" + }, + "infologger": { "": "Configuration of the Infologger (optional).", + "filterDiscardDebug": "false", "": "Set to 1 to discard debug and trace messages (default: false)", + "filterDiscardLevel": "2", "": "Message at this level or above are discarded (default: 21 - Trace)" } } }