From 2fa5d1b973449f4f0bd85436d7957b21a8b322af Mon Sep 17 00:00:00 2001
From: Stefano Borini <sborini@enthought.com>
Date: Tue, 24 Apr 2018 16:31:18 +0100
Subject: [PATCH] Added more logging

---
 force_bdss/cli/force_bdss.py         |  2 ++
 force_bdss/core_evaluation_driver.py | 15 +++++++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/force_bdss/cli/force_bdss.py b/force_bdss/cli/force_bdss.py
index 40503ce..1434b1d 100644
--- a/force_bdss/cli/force_bdss.py
+++ b/force_bdss/cli/force_bdss.py
@@ -19,6 +19,8 @@ push_exception_handler(reraise_exceptions=True)
 def run(evaluate, logfile, workflow_filepath):
 
     logging_config = {}
+    logging_config["level"] = logging.INFO
+
     if logfile is not None:
         logging_config["filename"] = logfile
 
diff --git a/force_bdss/core_evaluation_driver.py b/force_bdss/core_evaluation_driver.py
index 1f4b9dc..2657f35 100644
--- a/force_bdss/core_evaluation_driver.py
+++ b/force_bdss/core_evaluation_driver.py
@@ -14,7 +14,6 @@ CORE_EVALUATION_DRIVER_ID = plugin_id("core", "CoreEvaluationDriver")
 
 log = logging.getLogger(__name__)
 
-
 class CoreEvaluationDriver(BaseCoreDriver):
     """Main plugin that handles the execution of the MCO
     or the evaluation.
@@ -35,17 +34,20 @@ class CoreEvaluationDriver(BaseCoreDriver):
             sys.exit(0)
 
         mco_factory = mco_model.factory
+        log.info("Creating communicator")
         mco_communicator = mco_factory.create_communicator()
 
         mco_data_values = _get_data_values_from_mco(
             mco_model, mco_communicator)
 
+        log.info("Computing data layer 1")
         ds_results = _compute_layer_results(
             mco_data_values,
             workflow.data_sources,
             "create_data_source"
         )
 
+        log.info("Computing data layer 2")
         kpi_results = _compute_layer_results(
             ds_results + mco_data_values,
             workflow.kpi_calculators,
@@ -107,7 +109,13 @@ def _compute_layer_results(environment_data_values,
         # execute data source, passing only relevant data values.
         log.info("Evaluating for Data Source {}".format(
             factory.name))
-        res = evaluator.run(model, passed_data_values)
+
+        try:
+            res = evaluator.run(model, passed_data_values)
+        except Exception:
+            log.error("Evaluation could not be performed. Run method raised"
+                      "exception", exc_info=True)
+            raise
 
         if len(res) != len(out_slots):
             error_txt = (
@@ -165,6 +173,9 @@ def _get_data_values_from_mco(model, communicator):
     """
     mco_data_values = communicator.receive_from_mco(model)
 
+    log.info("Received data from MCO: \n{}".format(
+             "\n".join([str(x) for x in mco_data_values])))
+
     if len(mco_data_values) != len(model.parameters):
         error_txt = ("The number of data values returned by"
                      " the MCO ({} values) does not match the"
-- 
GitLab