diff --git a/Code/Common/otbVectorDataToGISTableFilter.txx b/Code/Common/otbVectorDataToGISTableFilter.txx
index 5772a580a7fb3663695cbfb549b7c8e6924bb733..f432debea2c0558a5bb920586289c30ad36dc21e 100644
--- a/Code/Common/otbVectorDataToGISTableFilter.txx
+++ b/Code/Common/otbVectorDataToGISTableFilter.txx
@@ -160,7 +160,7 @@ VectorDataToGISTableFilter<TVectorData, TGISTable>
         gisWriter->Write(input, overOptions);
 
         output->SetTableName (inputRoot->Get()->GetNodeId());
-        std::cout << "tablename " << output->GetTableName() << std::endl;
+        otbMsgDevMacro( "tablename " << output->GetTableName() );
         }
       else
         {
diff --git a/Code/Common/otbVectorDataToLabelMapFilter.txx b/Code/Common/otbVectorDataToLabelMapFilter.txx
index 5bd8100694ad9ca6fd4f61bacffec1e02720203f..e4d85af4fea7c31d1ff16930bd843334dadbef2c 100644
--- a/Code/Common/otbVectorDataToLabelMapFilter.txx
+++ b/Code/Common/otbVectorDataToLabelMapFilter.txx
@@ -299,9 +299,9 @@ VectorDataToLabelMapFilter<TVectorData, TLabelMap>
         RegionType polygonExtRingBoundReg = correctPolygonExtRing->GetBoundingRegion();
 
         VertexType vertex;
-        std::cout << "Polygon bounding region " << polygonExtRingBoundReg << std::endl;
-        std::cout << "output origin " << this->GetOutput()->GetOrigin() << std::endl;
-        std::cout << "spacing " << this->GetOutput()->GetSpacing() << std::endl;
+        otbMsgDevMacro( "Polygon bounding region " << polygonExtRingBoundReg);
+        otbMsgDevMacro( "output origin " << this->GetOutput()->GetOrigin());
+        otbMsgDevMacro( "spacing " << this->GetOutput()->GetSpacing());
         // For each position in the bounding region of the polygon
 
         for (double i = polygonExtRingBoundReg.GetOrigin(0);
diff --git a/Code/DisparityMap/otbNCCRegistrationFunction.txx b/Code/DisparityMap/otbNCCRegistrationFunction.txx
index 8f41312c1283d556ad9acc1aa67d86de3189323f..738f7d4596e7d1657b161896a0236199e0d42dab 100644
--- a/Code/DisparityMap/otbNCCRegistrationFunction.txx
+++ b/Code/DisparityMap/otbNCCRegistrationFunction.txx
@@ -107,9 +107,9 @@ NCCRegistrationFunction<TFixedImage, TMovingImage, TDeformationField>
   // setup moving image interpolator
   m_MovingImageInterpolator->SetInputImage(this->m_MovingImage);
 
-  std::cout << " total metric " << m_MetricTotal << " field size " <<
+  otbMsgDevMacro( " total metric " << m_MetricTotal << " field size " <<
   this->GetDeformationField()->GetLargestPossibleRegion().GetSize() << " image size " <<
-  this->m_FixedImage->GetLargestPossibleRegion().GetSize() << std::endl;
+  this->m_FixedImage->GetLargestPossibleRegion().GetSize() );
   m_MetricTotal = 0.0;
 
 }
diff --git a/Code/FeatureExtraction/otbParallelLinePathListFilter.txx b/Code/FeatureExtraction/otbParallelLinePathListFilter.txx
index 9531db1d783098634be03f2bf1f806cde69ebce5..8cde93b4cd4988ecc49c1022e74e890b10ad3fe0 100644
--- a/Code/FeatureExtraction/otbParallelLinePathListFilter.txx
+++ b/Code/FeatureExtraction/otbParallelLinePathListFilter.txx
@@ -133,9 +133,9 @@ ParallelLinePathListFilter<TPath>
     ++outputIt1;
     } // end of for loop
 
-  std::cout << "Number of line pairs that pass the angular condition:          " << parallelLineCounter << std::endl;
-  std::cout << "Number of line pairs that pass the maximum distance condition: " << maxDistCounter << std::endl;
-  std::cout << "Number of line pairs that pass the common distance condition:  " << commonDistCounter << std::endl;
+  otbMsgDevMacro( "Number of line pairs that pass the angular condition:          " << parallelLineCounter );
+  otbMsgDevMacro( "Number of line pairs that pass the maximum distance condition: " << maxDistCounter );
+  otbMsgDevMacro( "Number of line pairs that pass the common distance condition:  " << commonDistCounter  );
 
   // Write all parallel lines and set the non-erase flagg.
   typename std::vector<unsigned int>::iterator lineIt1 = parallelLineIndex.begin();
@@ -149,7 +149,7 @@ ParallelLinePathListFilter<TPath>
     // add a non-erase flag for the new path
     eraseFlagVector1.push_back(false);
     ++sortLineIndex;
-    std::cout << "Number of lines written in the path list: " << sortLineIndex << std::endl;
+    otbMsgDevMacro( "Number of lines written in the path list: " << sortLineIndex );
     ++lineIt1;
     }
 
@@ -338,14 +338,15 @@ ParallelLinePathListFilter<TPath>
       tempv4[0] = temptransv4[0] * cos(alpha1) + temptransv4[1] * sin(alpha1);
       tempv4[1] = temptransv4[1] * cos(alpha1) - temptransv4[0] * sin(alpha1);
 
-      std::cout << "tempv1[0], tempv1[1], tempv2[0], tempv2[1]: ";
-      std::cout << tempv1[0] << ", " << tempv1[1] << ", " << tempv2[0] << ", " << tempv2[1] << std::endl;
-      std::cout << "Alpha: " << alpha1 << std::endl;
-      std::cout << "tempv3[0], tempv3[1], tempv4[0], tempv4[1]: ";
-      std::cout << tempv3[0] << ", " << tempv3[1] << ", " << tempv4[0] << ", " << tempv4[1] << std::endl;
-      std::cout << "Calculated length of the second line: " <<
-      sqrt(pow((tempv4[0] - tempv3[0]), 2) + pow((tempv4[1] - tempv3[1]), 2)) << std::endl;
-      std::cout << "Original length of line 1:       " << length12 << std::endl;
+      otbMsgDevMacro(  "tempv1[0], tempv1[1], tempv2[0], tempv2[1]: " );
+      otbMsgDevMacro( tempv1[0] << ", " << tempv1[1] << ", " << tempv2[0] << ", " << tempv2[1] );
+      otbMsgDevMacro( "Alpha: " << alpha1 );
+      otbMsgDevMacro( "tempv3[0], tempv3[1], tempv4[0], tempv4[1]: "
+                       << tempv3[0] << ", " << tempv3[1] << ", "
+                       << tempv4[0] << ", " << tempv4[1] );
+      otbMsgDevMacro( "Calculated length of the second line: "
+                        << sqrt(pow((tempv4[0] - tempv3[0]), 2) + pow((tempv4[1] - tempv3[1]), 2)) );
+      otbMsgDevMacro( "Original length of line 1:       " << length12 );
       }
     }
 
@@ -391,14 +392,14 @@ ParallelLinePathListFilter<TPath>
       tempv4[0] = temptransv4[0] * cos(alpha1) + temptransv4[1] * sin(alpha1);
       tempv4[1] = temptransv4[1] * cos(alpha1) - temptransv4[0] * sin(alpha1);
 
-      std::cout << "tempv1[0], tempv1[1], tempv2[0], tempv2[1]: ";
-      std::cout << tempv1[0] << ", " << tempv1[1] << ", " << tempv2[0] << ", " << tempv2[1] << std::endl;
-      std::cout << "Alpha: " << alpha1 << std::endl;
-      std::cout << "tempv3[0], tempv3[1], tempv4[0], tempv4[1]: ";
-      std::cout << tempv3[0] << ", " << tempv3[1] << ", " << tempv4[0] << ", " << tempv4[1] << std::endl;
-      std::cout << "Calculated length of the second line: " <<
-      sqrt(pow((tempv4[0] - tempv3[0]), 2) + pow((tempv4[1] - tempv3[1]), 2)) << std::endl;
-      std::cout << "Original length of line 1:       " << length12 << std::endl;
+      otbMsgDevMacro( "tempv1[0], tempv1[1], tempv2[0], tempv2[1]: " );
+      otbMsgDevMacro( tempv1[0] << ", " << tempv1[1] << ", " << tempv2[0] << ", " << tempv2[1] );
+      otbMsgDevMacro( "Alpha: " << alpha1 );
+      otbMsgDevMacro( "tempv3[0], tempv3[1], tempv4[0], tempv4[1]: "
+                       << tempv3[0] << ", " << tempv3[1] << ", " << tempv4[0] << ", " << tempv4[1] );
+      otbMsgDevMacro( "Calculated length of the second line: "
+                       << sqrt(pow((tempv4[0] - tempv3[0]), 2) + pow((tempv4[1] - tempv3[1]), 2)) );
+      otbMsgDevMacro( "Original length of line 1:       " << length12 );
       }
     }
 
@@ -488,7 +489,7 @@ ParallelLinePathListFilter<TPath>
     }
   // The common parallel parts of the two lines have to be greater than
   // the provided threshold.
-  std::cout << "Calculated common distance of the parallel lines: " << commonDist << std::endl;
+  otbMsgDevMacro( "Calculated common distance of the parallel lines: " << commonDist );
   bool common = (commonDist >= static_cast<double>(m_CommonDistanceThreshold));
 
   return common;
diff --git a/Code/GeospatialAnalysis/otbPostGISCreateTableTransactor.cxx b/Code/GeospatialAnalysis/otbPostGISCreateTableTransactor.cxx
index b8ffee670ab7ab0d77c472eeaba28eb9eff728e6..8e7bf7858018dfddb9cfc321a7da97d604a71d9e 100644
--- a/Code/GeospatialAnalysis/otbPostGISCreateTableTransactor.cxx
+++ b/Code/GeospatialAnalysis/otbPostGISCreateTableTransactor.cxx
@@ -93,7 +93,7 @@ void PostGISCreateTableTransactor::operator ()(pqxx::nontransaction& T)
 
 void PostGISCreateTableTransactor::on_commit()
 {
-  std::cout << "\t Table is created \t"  << std::endl;
+  otbMsgDevMacro( "\t Table is created \t"  );
   //T.exec
 }
 
diff --git a/Code/GeospatialAnalysis/otbPostGISFromStringTransactor.cxx b/Code/GeospatialAnalysis/otbPostGISFromStringTransactor.cxx
index ebcbebf2b095c17cc97d35b0204f5e2c3870a422..107357da642ebe3dab6c104ff3240eabf0a72383 100644
--- a/Code/GeospatialAnalysis/otbPostGISFromStringTransactor.cxx
+++ b/Code/GeospatialAnalysis/otbPostGISFromStringTransactor.cxx
@@ -56,9 +56,7 @@ void PostGISFromStringTransactor::operator ()(pqxx::nontransaction& T)
 
 void PostGISFromStringTransactor::on_commit()
 {
-  std::cout << "\t Transaction \t"  << std::endl;
-  std::cout << "\t " << m_TransactionString  << std::endl;
-
+  otbMsgDevMacro( "\t Transaction \t\n\t"  << m_TransactionString );
 }
 
 std::string PostGISFromStringTransactor::GetTransactionString() const
diff --git a/Code/IO/otbGDALImageIO.cxx b/Code/IO/otbGDALImageIO.cxx
index 9f37a215d42eca7fbf48e2602572065d28452467..57b3ffc3b67519ac98de1b0d600faaaeb211f085 100644
--- a/Code/IO/otbGDALImageIO.cxx
+++ b/Code/IO/otbGDALImageIO.cxx
@@ -39,6 +39,8 @@
 
 namespace otb
 {
+
+/*
 template<class InputType>
 void printOutputData(InputType *pData, int nbBands, int nbPixelToRead)
 {
@@ -87,7 +89,7 @@ void printDataBuffer(unsigned char *pData, GDALDataType pxlType, int nbBands, in
     std::cerr << "Pixel type unknown" << std::endl;
     }
 };
-
+*/
 
 // only two states : the Pointer is Null or GetDataSet() returns a valid dataset
 class GDALDatasetWrapper : public itk::LightObject
diff --git a/Code/IO/otbImageToOSMVectorDataGenerator.txx b/Code/IO/otbImageToOSMVectorDataGenerator.txx
index e39cfe3781a81255a1210416a73c822ebe1eb55f..8a6c3c23ad0da6cae7a697108606f4bc189efea5 100644
--- a/Code/IO/otbImageToOSMVectorDataGenerator.txx
+++ b/Code/IO/otbImageToOSMVectorDataGenerator.txx
@@ -139,8 +139,8 @@ ImageToOSMVectorDataGenerator<TImage>
     {
     PointType physicalPoint;
     input->TransformIndexToPhysicalPoint(vindex[i], physicalPoint);
-    std::cout <<" physical point "<<  physicalPoint << " --> Transform "
-              << transform->TransformPoint(physicalPoint) << std::endl;
+    otbMsgDevMacro( << " physical point "<<  physicalPoint << " --> Transform "
+                    << transform->TransformPoint(physicalPoint));
     voutput.push_back(transform->TransformPoint(physicalPoint));
     }
 
diff --git a/Code/IO/otbKMLVectorDataIO.txx b/Code/IO/otbKMLVectorDataIO.txx
index c439e774a337a8483cec70fd359c97f7f9784e41..83acbafcb37b4e9d0066ed17d8eb54222433c982 100644
--- a/Code/IO/otbKMLVectorDataIO.txx
+++ b/Code/IO/otbKMLVectorDataIO.txx
@@ -461,10 +461,8 @@ KMLVectorDataIO<TData>
     itkExceptionMacro(<< "Failed to open KML data file " << this->m_FileName);
     }
 
-  std::cout << this->m_FileName << std::endl;
-
-  otbMsgDebugMacro(<< "Driver to read: KML");
-  otbMsgDebugMacro(<< "Reading  file: " << this->m_FileName);
+  otbMsgDevMacro(<< "Driver to read: KML");
+  otbMsgDevMacro(<< "Reading  file: " << this->m_FileName);
 
   // Parse the file.
   std::string        errors;
@@ -578,9 +576,7 @@ void KMLVectorDataIO<TData>::Write(const VectorDataConstPointerType data, char *
   //std::cout << xml;
 
   chrono.Stop();
-  std::cout << "KMLVectorDataIO: file saved in " << chrono.GetMeanTime() << " seconds. (" << m_Kept << " elements)" <<
-  std::endl;
-
+  otbMsgDevMacro(<< "KMLVectorDataIO: file saved in " << chrono.GetMeanTime() << " seconds. (" << m_Kept << " elements)" );
   otbMsgDevMacro(<< " KMLVectorDataIO::Write()  ");
 
 }
diff --git a/Code/IO/otbMapFileProductWriter.txx b/Code/IO/otbMapFileProductWriter.txx
index f270c54b75732be2528a88b136c955661f1e2ec2..8b7784729fdd3491d9c5d5112004f49cfb93348b 100644
--- a/Code/IO/otbMapFileProductWriter.txx
+++ b/Code/IO/otbMapFileProductWriter.txx
@@ -117,7 +117,7 @@ MapFileProductWriter<TInputImage>
   if(m_VectorImage->GetProjectionRef().empty()
      && m_VectorImage->GetImageKeywordlist().GetSize() > 0)
     {
-    std::cout << "Sensor Model detected : Reprojecting in the targer SRID"<< std::endl;
+    otbMsgDevMacro( "Sensor Model detected : Reprojecting in the targer SRID" );
     m_GenericRSResampler->SetInput(this->GetInput());
     m_GenericRSResampler->SetOutputParametersFromMap(otb::GeoInformationConversion::ToWKT(m_SRID));
     m_VectorImage = m_GenericRSResampler->GetOutput();
diff --git a/Code/Learning/otbDecisionTree.txx b/Code/Learning/otbDecisionTree.txx
index b4d74d9a9129886cebbabfab9cafa42622b533f2..43f8aa84d394a0c99750a5a024cffc2a43cfff9b 100644
--- a/Code/Learning/otbDecisionTree.txx
+++ b/Code/Learning/otbDecisionTree.txx
@@ -92,7 +92,7 @@ DecisionTree<AttributeValueType, LabelType>
 {
   AttributeValueType attrValue = example[m_Attribute];
 
-  std::cout << "Trying to match attribute " << m_Attribute << " with value " << attrValue << std::endl;
+  otbMsgDevMacro( << "Trying to match attribute " << m_Attribute << " with value " << attrValue );
 
   bool found = false;
   KeyType key;
diff --git a/Code/Learning/otbSVMCrossValidationCostFunction.txx b/Code/Learning/otbSVMCrossValidationCostFunction.txx
index 6b217c85c4ce6f96f9532441bcfac301a8fd9bc7..e09dd8248e530e79e876fd9509a15501b9fd6301 100644
--- a/Code/Learning/otbSVMCrossValidationCostFunction.txx
+++ b/Code/Learning/otbSVMCrossValidationCostFunction.txx
@@ -77,10 +77,10 @@ SVMCrossValidationCostFunction<TModel>
     y2 = this->GetValue(x2);
 
     derivative[i] = (y2 - y1) / (2 * m_DerivativeStep);
-    std::cout << "x1= " << x1 << " x2= " << x2 << ", y1= " << y1 << ", y2= " << y2 << std::endl;
+    otbMsgDevMacro( << "x1= " << x1 << " x2= " << x2 << ", y1= " << y1 << ", y2= " << y2 );
     }
-  std::cout << "Position: " << parameters << ", Value: " << this->GetValue(parameters) << ", Derivatives: " <<
-  derivative << std::endl;
+  otbMsgDevMacro( "Position: " << parameters << ", Value: " << this->GetValue(parameters)
+                  << ", Derivatives: " << derivative );
 }
 
 template<class TModel>
diff --git a/Code/Learning/otbSVMMarginSampler.txx b/Code/Learning/otbSVMMarginSampler.txx
index 167f561ab0bf7c468810c373a9f285e50833c2f0..c63c69b5222647bdd0e2d78797c6315646ee84d4 100644
--- a/Code/Learning/otbSVMMarginSampler.txx
+++ b/Code/Learning/otbSVMMarginSampler.txx
@@ -144,14 +144,14 @@ SVMMarginSampler< TSample, TModel >
   sort(idDistVector.begin(), idDistVector.end(), &Compare);
 
   // Display the first 10 values
-  std::cout <<" Margin Sampling: "<<std::endl;
+  otbMsgDevMacro( <<" Margin Sampling: " );
 
   // Clear previous margin samples
   m_MarginSamples.clear();
   
   for(unsigned int i = 0; i<m_NumberOfCandidates && i<idDistVector.size(); ++i)
     {
-    std::cout<<"Sample "<<idDistVector[i].first<<" (distance= "<<idDistVector[i].second<<")"<<std::endl;
+    otbMsgDevMacro( "Sample "<<idDistVector[i].first<<" (distance= "<<idDistVector[i].second<<")" )
     m_MarginSamples.push_back(idDistVector[i].first);
     }
 
diff --git a/Code/Learning/otbSVMModel.txx b/Code/Learning/otbSVMModel.txx
index dbdfe4cf3e6e7d572df96749154f9cb99b6f2d2d..0a2bf4964d1b9f388eca636278aa0577123094a6 100644
--- a/Code/Learning/otbSVMModel.txx
+++ b/Code/Learning/otbSVMModel.txx
@@ -588,9 +588,9 @@ SVMModel<TValue, TLabel>::SetSupportVectors(svm_node ** sv, int nbOfSupportVecto
   unsigned int elements = 0;
   for (int p = 0; p < nbOfSupportVector; ++p)
     {
-    std::cout << p << "  ";
+    //std::cout << p << "  ";
     const svm_node *tempNode = sv[p];
-    std::cout << p << "  ";
+    //std::cout << p << "  ";
     while (tempNode->index != -1)
       {
       tempNode++;
diff --git a/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.txx b/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.txx
index c41965833f2cd7e88175acf8199ad910aa727dd4..d67d3f89b53ff0af761834261a5d7c9ec3e98666 100644
--- a/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.txx
+++ b/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.txx
@@ -371,20 +371,20 @@ MultiChannelsPolarimetricSynthesisFilter<TInputImage, TOutputImage, TFunction>
 ::PrintSelf(std::ostream& os, itk::Indent indent) const
 {
   this->Superclass::PrintSelf(os, indent);
-  std::cout << "PsiI: " << m_PsiI << std::endl;
-  std::cout << "KhiI: " << m_KhiI << std::endl;
-  std::cout << "PsiR: " << m_PsiR << std::endl;
-  std::cout << "KhiR: " << m_KhiR << std::endl;
-
-  std::cout << "Ei0 im: " << m_Ei[0].imag() << std::endl;
-  std::cout << "Ei0 re: " << m_Ei[0].real() << std::endl;
-  std::cout << "Ei1 im: " << m_Ei[1].imag() << std::endl;
-  std::cout << "Ei1 re: " << m_Ei[1].real() << std::endl;
-
-  std::cout << "Er0 im: " << m_Er[0].imag() << std::endl;
-  std::cout << "Er0 re: " << m_Er[0].real() << std::endl;
-  std::cout << "Er1 im: " << m_Er[1].imag() << std::endl;
-  std::cout << "Er1 re: " << m_Er[1].real() << std::endl;
+  os << indent << "PsiI: " << m_PsiI << std::endl;
+  os << indent << "KhiI: " << m_KhiI << std::endl;
+  os << indent << "PsiR: " << m_PsiR << std::endl;
+  os << indent << "KhiR: " << m_KhiR << std::endl;
+
+  os << indent << "Ei0 im: " << m_Ei[0].imag() << std::endl;
+  os << indent << "Ei0 re: " << m_Ei[0].real() << std::endl;
+  os << indent << "Ei1 im: " << m_Ei[1].imag() << std::endl;
+  os << indent << "Ei1 re: " << m_Ei[1].real() << std::endl;
+
+  os << indent << "Er0 im: " << m_Er[0].imag() << std::endl;
+  os << indent << "Er0 re: " << m_Er[0].real() << std::endl;
+  os << indent << "Er1 im: " << m_Er[1].imag() << std::endl;
+  os << indent << "Er1 re: " << m_Er[1].real() << std::endl;
 }
 
 } // end namespace otb