diff --git a/MeshLib/Elements/Element.cpp b/MeshLib/Elements/Element.cpp
index 7e24dbdabc3edc9cced003906b80a1bba6f6e203..5ab217cc28b43468a91a4665da85748bdf8c44d2 100644
--- a/MeshLib/Elements/Element.cpp
+++ b/MeshLib/Elements/Element.cpp
@@ -10,6 +10,8 @@
  * Created on 2012-05-02 by Karsten Rink
  */
 
+#include "logog/include/logog.hpp"
+
 #include "Element.h"
 #include "Node.h"
 #include "Edge.h"
@@ -74,7 +76,7 @@ const Element* Element::getEdge(unsigned i) const
 		nodes[1] = const_cast<Node*>(getEdgeNode(i,1));
 		return new Edge(nodes);
 	}
-	std::cerr << "Error in MeshLib::Element::getEdge() - Index does not exist." << std::endl;
+	ERR("Error in MeshLib::Element::getEdge() - Index does not exist.");
 	return NULL;
 }
 
@@ -95,7 +97,7 @@ const Element* Element::getNeighbor(unsigned i) const
 {
 	if (i < getNNeighbors())
 		return _neighbors[i];
-	std::cerr << "Error in MeshLib::Element::getNeighbor() - Index does not exist." << std::endl;
+	ERR("Error in MeshLib::Element::getNeighbor() - Index does not exist.");
 	return NULL;
 }
 
@@ -112,7 +114,7 @@ const Node* Element::getNode(unsigned i) const
 {
 	if (i < getNNodes())
 		return _nodes[i];
-	std::cerr << "Error in MeshLib::Element::getNode() - Index " << i << " in " << MshElemType2String(getGeomType()) <<  " does not exist." << std::endl;
+	ERR("Error in MeshLib::Element::getNode() - Index %d in %s", i, MshElemType2String(getGeomType()).c_str());
 	return NULL;
 }
 
@@ -126,7 +128,7 @@ unsigned Element::getNodeIndex(unsigned i) const
 {
 	if (i<getNNodes())
 		return _nodes[i]->getID();
-	std::cerr << "Error in MeshLib::Element::getNodeIndex() - Index does not exist." << std::endl;
+	ERR("Error in MeshLib::Element::getNodeIndex() - Index does not exist.");
 	return std::numeric_limits<unsigned>::max();
 }
 
diff --git a/MeshLib/Elements/TemplateHex.tpp b/MeshLib/Elements/TemplateHex.tpp
index aa2b3d9893337714ce3456e9d5c5833535afca12..b22408b05c860d93b5eaf7f9a8b84414ee62ae79 100644
--- a/MeshLib/Elements/TemplateHex.tpp
+++ b/MeshLib/Elements/TemplateHex.tpp
@@ -10,6 +10,8 @@
  * Created on 2012-05-02 by Karsten Rink
  */
 
+#include "logog/include/logog.hpp"
+
 #include "Node.h"
 #include "Quad.h"
 #include "Prism.h"
@@ -101,7 +103,7 @@ const Element* TemplateHex<NNODES,CELLHEXTYPE>::getFace(unsigned i) const
 			nodes[j] = _nodes[_face_nodes[i][j]];
 		return new Quad(nodes);
 	}
-	std::cerr << "Error in MeshLib::Element::getFace() - Index does not exist." << std::endl;
+	ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i);
 	return NULL;
 }
 
@@ -149,7 +151,7 @@ Element* TemplateHex<NNODES,CELLHEXTYPE>::reviseElement() const
 	}
 
 	if (collapsed_edges.size() == 1) {
-		std::cerr << "[TemplateHex<NNODES,CELLHEXTYPE>::reviseElement()] collapsing of one edge in hexahedron not handled" << std::endl;
+		ERR("[TemplateHex<NNODES,CELLHEXTYPE>::reviseElement()] collapsing of one edge in hexahedron not handled.");
 		return NULL;
 	}
 
diff --git a/MeshLib/Elements/TemplatePrism.tpp b/MeshLib/Elements/TemplatePrism.tpp
index a9b8885f34d1e4e40cc2265a55568f4897fce8d2..aa290989b359f97bbef92020ad886b9cc6ec267d 100644
--- a/MeshLib/Elements/TemplatePrism.tpp
+++ b/MeshLib/Elements/TemplatePrism.tpp
@@ -10,6 +10,9 @@
  * Created on 2012-05-02 by Karsten Rink
  */
 
+// Thirdparty
+#include "logog/include/logog.hpp"
+
 #include "Node.h"
 #include "Tri.h"
 #include "Pyramid.h"
@@ -100,7 +103,7 @@ const Element* TemplatePrism<NNODES,CELLPRISMTYPE>::getFace(unsigned i) const
 		else
 			return new Quad(nodes);
 	}
-	std::cerr << "Error in MeshLib::Element::getFace() - Index does not exist." << std::endl;
+	ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i);
 	return NULL;
 }
 
@@ -109,7 +112,7 @@ unsigned TemplatePrism<NNODES,CELLPRISMTYPE>::getNFaceNodes(unsigned i) const
 {
 	if (i<5)
 		return _n_face_nodes[i];
-	std::cerr << "Error in MeshLib::Element::getNFaceNodes() - Index does not exist." << std::endl;
+	ERR("Error in MeshLib::Element::getNFaceNodes() - Index %d does not exist.", i);
 	return 0;
 }
 
diff --git a/MeshLib/Elements/TemplatePyramid.tpp b/MeshLib/Elements/TemplatePyramid.tpp
index 9b593253e962a9d3a24167bde7166daf849a1b62..f51031899ff166655ccd342db2c1e2f7db78d9df 100644
--- a/MeshLib/Elements/TemplatePyramid.tpp
+++ b/MeshLib/Elements/TemplatePyramid.tpp
@@ -10,6 +10,9 @@
  * Created on 2012-05-02 by Karsten Rink
  */
 
+// Thirdparty
+#include "logog/include/logog.hpp"
+
 #include "Node.h"
 #include "Tri.h"
 #include "Tet.h"
@@ -102,7 +105,7 @@ const Element* TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::getFace(unsigned i) cons
 		else
 			return new Quad(nodes);
 	}
-	std::cerr << "Error in MeshLib::Element::getFace() - Index does not exist." << std::endl;
+	ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i);
 	return NULL;
 }
 
@@ -111,7 +114,7 @@ unsigned TemplatePyramid<NNODES,CELLPYRAMIDTYPE>::getNFaceNodes(unsigned i) cons
 {
 	if (i<5)
 		return _n_face_nodes[i];
-	std::cerr << "Error in MeshLib::Element::getNFaceNodes() - Index does not exist." << std::endl;
+	ERR("Error in MeshLib::Element::getNFaceNodes() - Index %d does not exist.", i);
 	return 0;
 }
 
diff --git a/MeshLib/Elements/TemplateTet.tpp b/MeshLib/Elements/TemplateTet.tpp
index ba0192fe0dd75773a3d5236a98199bb223f07e61..6739f7ee7f1f4b495badc117086ce5cca7c72b59 100644
--- a/MeshLib/Elements/TemplateTet.tpp
+++ b/MeshLib/Elements/TemplateTet.tpp
@@ -10,6 +10,8 @@
  * Created on 2012-05-02 by Karsten Rink
  */
 
+#include "logog/include/logog.hpp"
+
 #include "Node.h"
 #include "Tri.h"
 
@@ -90,7 +92,7 @@ const Element* TemplateTet<NNODES,CELLTETTYPE>::getFace(unsigned i) const
 			nodes[j] = _nodes[_face_nodes[i][j]];
 		return new Tri(nodes);
 	}
-	std::cerr << "Error in MeshLib::Element::getFace() - Index does not exist." << std::endl;
+	ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i);
 	return NULL;
 }
 
diff --git a/MeshLib/Mesh.cpp b/MeshLib/Mesh.cpp
index aab394540730f23a5cb7368863708ddb41995283..c4dbeb0c461492c3c490ea6de0a4905df273d9c3 100644
--- a/MeshLib/Mesh.cpp
+++ b/MeshLib/Mesh.cpp
@@ -93,7 +93,7 @@ void Mesh::makeNodesUnique()
 	}
 
 	//set correct id for each node
-	
+
 	//if (this->getDimension() > 1)
 	//	this->removeMeshElements(MshElemType::EDGE);
 
@@ -268,7 +268,7 @@ void Mesh::removeUnusedMeshNodes()
 	}
 	if (count)
 	{
-		std::cout << "Removed " << count << " unused mesh nodes." << std::endl;
+		INFO("Removed %d unused mesh nodes.", count );
 		this->resetNodeIDs();
 	}
 }
@@ -276,8 +276,7 @@ void Mesh::removeUnusedMeshNodes()
 void Mesh::removeMeshElements(MshElemType::type t)
 {
 	unsigned count(0);
-	std::vector<MeshLib::Element*>::iterator it = this->_elements.begin();
-	for (it; it != this->_elements.end();)
+	for (std::vector<MeshLib::Element*>::iterator it = this->_elements.begin(); it != this->_elements.end();)
 	{
 		if ((*it)->getCellType() == t)
 		{
@@ -285,10 +284,10 @@ void Mesh::removeMeshElements(MshElemType::type t)
 			it = this->_elements.erase(it);
 			++count;
 		}
-		else 
+		else
 			++it;
 	}
-	std::cout << "Removed " << count << " elements of type " << MshElemType2String(t) << " from mesh." << std::endl;
+	INFO("Removed %d  elements of type %s from mesh.", count, MshElemType2String(t).c_str());
 }
 
 }
diff --git a/MeshLib/MeshCoarsener.cpp b/MeshLib/MeshCoarsener.cpp
index 5edf52a815c6967cfa8d7fdee197400b9952ea8b..53d73dd18d0cdb06051e7f9aaae97f773112015c 100644
--- a/MeshLib/MeshCoarsener.cpp
+++ b/MeshLib/MeshCoarsener.cpp
@@ -74,7 +74,7 @@ Mesh* MeshCoarsener::operator()(double min_distance)
 						// two nodes are very close to each other
 						id_map[test_node_id] = node_id_k;
 #ifndef NDEBUG
-						INFO ("distance of nodes with ids %d and %d is %f", node_id_k, test_node_id, sqrt(MathLib::sqrDist(node->getCoords(), test_node->getCoords())));
+						INFO("distance of nodes with ids %d and %d is %f", node_id_k, test_node_id, sqrt(MathLib::sqrDist(node->getCoords(), test_node->getCoords())));
 #endif
 					}
 				}
@@ -131,7 +131,7 @@ Mesh* MeshCoarsener::operator()(double min_distance)
 			const size_t orig_node_id (kth_orig_elem->getNode(i)->getID());
 			std::map<size_t, size_t>::const_iterator it(orig_ids_map.find(orig_node_id));
 			if (it == orig_ids_map.end()) {
-				std::cerr << "[MeshCoarsener::operator()] could not found mesh node id" << std::endl;
+				ERR("[MeshCoarsener::operator()] could not found mesh node id.");
 			} else {
 				mapped_node_ids_of_element.push_back(id_map[it->second]);
 			}