diff --git a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
index db003d286524711ebdc704d49087fe39d52ba21b..c04c897a6e1e582358065a95330895f6ab801a6b 100644
--- a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
+++ b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
@@ -52,9 +52,10 @@ template <class T_SOLVER>
 class EigenDirectLinearSolver final : public EigenLinearSolverBase
 {
 public:
-    bool solve(Matrix& A, Vector const& b, Vector& x, EigenOption& /*opt*/) override
+    bool solve(Matrix& A, Vector const& b, Vector& x, EigenOption& opt) override
     {
-        INFO("-> solve");
+        INFO("-> solve with %s",
+             EigenOption::getSolverName(opt.solver_type).c_str());
         if (!A.isCompressed()) A.makeCompressed();
 
         _solver.compute(A);
@@ -83,7 +84,9 @@ class EigenIterativeLinearSolver final : public EigenLinearSolverBase
 public:
     bool solve(Matrix& A, Vector const& b, Vector& x, EigenOption& opt) override
     {
-        INFO("-> solve");
+        INFO("-> solve with %s (precon %s)",
+             EigenOption::getSolverName(opt.solver_type).c_str(),
+             EigenOption::getPreconName(opt.precon_type).c_str());
         _solver.setTolerance(opt.error_tolerance);
         _solver.setMaxIterations(opt.max_iterations);
 
diff --git a/MathLib/LinAlg/Eigen/EigenOption.cpp b/MathLib/LinAlg/Eigen/EigenOption.cpp
index 5cd640d8724c6dad504aae879fff11c28c379b29..c64f36301386eed940ca70c2b4eded9c7c8732f5 100644
--- a/MathLib/LinAlg/Eigen/EigenOption.cpp
+++ b/MathLib/LinAlg/Eigen/EigenOption.cpp
@@ -52,4 +52,34 @@ EigenOption::PreconType EigenOption::getPreconType(const std::string &precon_nam
     OGS_FATAL("Unknown Eigen preconditioner type `%s'", precon_name.c_str());
 }
 
+std::string EigenOption::getSolverName(SolverType const solver_type)
+{
+    switch (solver_type) {
+        case SolverType::CG:
+            return "CG";
+        case SolverType::BiCGSTAB:
+            return "BiCGSTAB";
+        case SolverType::SparseLU:
+            return "SparseLU";
+        case SolverType::PardisoLU:
+            return "PardisoLU";
+        case SolverType::GMRES:
+            return "GMRES";
+    }
+    return "Invalid";
+}
+
+std::string EigenOption::getPreconName(PreconType const precon_type)
+{
+    switch (precon_type) {
+        case PreconType::NONE:
+            return "NONE";
+        case PreconType::DIAGONAL:
+            return "DIAGONAL";
+        case PreconType::ILUT:
+            return "ILUT";
+    }
+    return "Invalid";
+}
+
 } //MathLib
diff --git a/MathLib/LinAlg/Eigen/EigenOption.h b/MathLib/LinAlg/Eigen/EigenOption.h
index 84af7c8f607b996b2aa7065749a2efdd49e32994..619b01f1685a4f404c84d0f57d9e6c70edacf4a2 100644
--- a/MathLib/LinAlg/Eigen/EigenOption.h
+++ b/MathLib/LinAlg/Eigen/EigenOption.h
@@ -71,6 +71,13 @@ struct EigenOption final
     ///      is returned.
     static PreconType getPreconType(const std::string &precon_name);
 
+
+    /// return a linear solver name from the solver type
+    static std::string getSolverName(SolverType const solver_type);
+
+    /// return a preconditioner name from the preconditioner type
+    static std::string getPreconName(PreconType const precon_type);
+
 };
 
 }