diff --git a/algo/detectors/bmon/UnpackBmon.h b/algo/detectors/bmon/UnpackBmon.h
index 5549a677c7bf3e010fc05a13a9968eecb9b5b7e7..576f714b437d50d970933ea56735c8f6c1489a1f 100644
--- a/algo/detectors/bmon/UnpackBmon.h
+++ b/algo/detectors/bmon/UnpackBmon.h
@@ -15,6 +15,7 @@
 #include <cstddef>
 #include <cstdint>
 #include <memory>
+#include <sstream>
 #include <vector>
 
 #include "CriGet4Mess001.h"
@@ -63,6 +64,13 @@ namespace cbm::algo
                            + fNumErrInvalidMsSize + fNumErrTimestampOverflow;
       return (numErrors > 0 ? true : false);
     }
+    std::string print()
+    {
+      std::stringstream ss;
+      ss << "errors " << fNumNonHitOrTsbMessage << " | " << fNumErrElinkOutOfRange << " | "
+         << fNumErrInvalidFirstMessage << " | " << fNumErrInvalidMsSize << " | " << fNumErrTimestampOverflow << " | ";
+      return ss.str();
+    }
   };
 
 
diff --git a/algo/detectors/much/UnpackMuch.h b/algo/detectors/much/UnpackMuch.h
index fe0310fc73993ea82871920e2f650e0fb89dcff8..a5af4d786c365591ac967f0788c6c9090ce3a052 100644
--- a/algo/detectors/much/UnpackMuch.h
+++ b/algo/detectors/much/UnpackMuch.h
@@ -15,6 +15,7 @@
 #include <cstddef>
 #include <cstdint>
 #include <memory>
+#include <sstream>
 #include <vector>
 
 #include "StsXyterMessage.h"
@@ -61,6 +62,13 @@ namespace cbm::algo
                            + fNumErrInvalidMsSize + fNumErrTimestampOverflow;
       return (numErrors > 0 ? true : false);
     }
+    std::string print()
+    {
+      std::stringstream ss;
+      ss << "errors " << fNumNonHitOrTsbMessage << " | " << fNumErrElinkOutOfRange << " | "
+         << fNumErrInvalidFirstMessage << " | " << fNumErrInvalidMsSize << " | " << fNumErrTimestampOverflow << " | ";
+      return ss.str();
+    }
   };
 
 
diff --git a/algo/detectors/sts/UnpackSts.h b/algo/detectors/sts/UnpackSts.h
index ed1fd22a253c3c35a2b80fcf152f87e588966e4e..522ca24051b447f627db46addc7772265c4ee394 100644
--- a/algo/detectors/sts/UnpackSts.h
+++ b/algo/detectors/sts/UnpackSts.h
@@ -66,9 +66,15 @@ namespace cbm::algo
                            + fNumErrInvalidMsSize + fNumErrTimestampOverflow;
       return (numErrors > 0 ? true : false);
     }
+    std::string print()
+    {
+      std::stringstream ss;
+      ss << "errors " << fNumNonHitOrTsbMessage << " | " << fNumErrElinkOutOfRange << " | "
+         << fNumErrInvalidFirstMessage << " | " << fNumErrInvalidMsSize << " | " << fNumErrTimestampOverflow << " | ";
+      return ss.str();
+    }
   };
 
-
   /** @class UnpackSts
    ** @author Pierre-Alain Loizeau <p.-a.loizeau@gsi.de>
    ** @author Volker Friese <v.friese@gsi.de>
diff --git a/algo/detectors/tof/UnpackTof.h b/algo/detectors/tof/UnpackTof.h
index ac1166be47cc8470dd2d102f8a07fe0ea78776d1..c616229b3c3baf9a6aab32dd4c90338143b9f839 100644
--- a/algo/detectors/tof/UnpackTof.h
+++ b/algo/detectors/tof/UnpackTof.h
@@ -15,6 +15,7 @@
 #include <cstddef>
 #include <cstdint>
 #include <memory>
+#include <sstream>
 #include <vector>
 
 #include "CriGet4Mess001.h"
@@ -61,6 +62,13 @@ namespace cbm::algo
                            + fNumErrInvalidStartEpoch;
       return (numErrors > 0 ? true : false);
     }
+    std::string print()
+    {
+      std::stringstream ss;
+      ss << "errors " << fNumNonHitOrTsbMessage << " | " << fNumErrElinkOutOfRange << " | "
+         << fNumErrInvalidFirstMessage << " | " << fNumErrInvalidMsSize << " | " << fNumErrTimestampOverflow << " | ";
+      return ss.str();
+    }
   };
 
   /** @class UnpackTof
diff --git a/algo/detectors/trd/UnpackTrd.h b/algo/detectors/trd/UnpackTrd.h
index 8d43d737cf34af34c44bb5fd64e8e18748c482af..737722a5723c362f401f7f2e99b7a61277d0f853 100644
--- a/algo/detectors/trd/UnpackTrd.h
+++ b/algo/detectors/trd/UnpackTrd.h
@@ -13,6 +13,7 @@
 #include "Timeslice.hpp"
 
 #include <memory>
+#include <sstream>
 
 #include <cmath>
 
@@ -84,6 +85,13 @@ namespace cbm::algo
                            + fNumErrInvalidMsSize + fNumErrTimestampOverflow;
       return (numErrors > 0 ? true : false);
     }
+    std::string print()
+    {
+      std::stringstream ss;
+      ss << "errors " << fNumNonHitOrTsbMessage << " | " << fNumErrElinkOutOfRange << " | "
+         << fNumErrInvalidFirstMessage << " | " << fNumErrInvalidMsSize << " | " << fNumErrTimestampOverflow << " | ";
+      return ss.str();
+    }
   };
 
 
diff --git a/reco/tasks/CbmTaskUnpack.cxx b/reco/tasks/CbmTaskUnpack.cxx
index a5b8926b8886121f353fc195638a8616c74b476d..7aafa5cbbc0d5815bd02b4a982e83c7965c8b4b4 100644
--- a/reco/tasks/CbmTaskUnpack.cxx
+++ b/reco/tasks/CbmTaskUnpack.cxx
@@ -76,9 +76,7 @@ uint64_t CbmTaskUnpack::MsLoop(const fles::Timeslice* timeslice, UnpackAlgo& alg
     *numBytesInComp += msDescriptor.size;
     auto result = algo(msContent, msDescriptor, timeslice->start_time());
     LOG(debug1) << GetName() << ": Component " << comp << ", microslice " << mslice << ", digis " << result.first.size()
-                << ", errors " << result.second.fNumNonHitOrTsbMessage << " | " << result.second.fNumErrElinkOutOfRange
-                << " | " << result.second.fNumErrInvalidFirstMessage << " | " << result.second.fNumErrInvalidMsSize
-                << " | " << result.second.fNumErrTimestampOverflow << " | ";
+                << ", " << result.second.print();
     *numDigisInComp += result.first.size();
 #pragma omp critical(insert_digis)
     digis->insert(digis->end(), result.first.begin(), result.first.end());