diff --git a/serokell-util.cabal b/serokell-util.cabal
--- a/serokell-util.cabal
+++ b/serokell-util.cabal
@@ -1,5 +1,5 @@
 name:                serokell-util
-version:             0.3
+version:             0.3.1
 synopsis:            General-purpose functions by Serokell
 homepage:            https://github.com/serokell/serokell-util
 license:             MIT
@@ -43,6 +43,7 @@
                        Serokell.Util.StaticAssert
                        Serokell.Util.Text
                        Serokell.Util.Time
+                       Serokell.Util.Trace
                        Serokell.Util.Verify
   other-modules:       Serokell.Data.Variant.Class
                        Serokell.Data.Variant.Helpers
@@ -66,7 +67,7 @@
                      , exceptions
                      , extra
                      , filepath
-                     , formatting
+                     , formatting >= 6.2.0
                      , hashable >= 1.2.4.0
                      , lens
                      , log-warper
diff --git a/src/Serokell/Util.hs b/src/Serokell/Util.hs
--- a/src/Serokell/Util.hs
+++ b/src/Serokell/Util.hs
@@ -15,4 +15,5 @@
 import           Serokell.Util.StaticAssert as Exports
 import           Serokell.Util.Text         as Exports
 import           Serokell.Util.Time         as Exports
+import           Serokell.Util.Trace        as Exports
 import           Serokell.Util.Verify       as Exports
diff --git a/src/Serokell/Util/Trace.hs b/src/Serokell/Util/Trace.hs
new file mode 100644
--- /dev/null
+++ b/src/Serokell/Util/Trace.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE FlexibleInstances      #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE MultiParamTypeClasses  #-}
+{-# LANGUAGE UndecidableInstances   #-}
+{-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
+
+-- | Utility trace-like functions.
+
+module Serokell.Util.Trace
+    ( traceIdF
+    ) where
+
+import           Universum
+
+import           Data.Text           (Text)
+import           Formatting          (Format, now, sformat)
+import           Formatting.Internal (runFormat)
+
+-- | Class for supplying various variable-arguments traces
+class VarArgTrace fmt f | fmt -> f where
+    traceIdFHelper :: fmt -> f
+
+instance {-# OVERLAPPING #-}
+         Print p => VarArgTrace (x -> p) (x -> x) where
+    traceIdFHelper fmt x = trace (fmt x) x
+
+instance VarArgTrace fmt f => VarArgTrace (a -> fmt) (a -> f) where
+    traceIdFHelper fmt a = traceIdFHelper (fmt a)
+
+-- | Generalized version of `traceShowId`.
+-- Accepts formatter as first parameter, and then multiple arguments to print.
+--
+-- Examples:
+-- >>> traceIdF F.ords 1
+-- 1st
+-- 1
+--
+-- >>> traceIdF ("Item no "%F.int%": "%F.build) 5 True
+-- Item no 5: True
+-- True
+{-# WARNING traceIdF "'traceIdF' remains in code" #-}
+traceIdF :: VarArgTrace fmt a => Format Text fmt -> a
+traceIdF fmt = traceIdFHelper (runFormat fmt (sformat . now))
