diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,8 @@
+1.4.1
+=====
+
+* Add `logEvents` function to log `[LogEvent]` with proper logName.
+
 1.4.0
 =====
 
diff --git a/log-warper.cabal b/log-warper.cabal
--- a/log-warper.cabal
+++ b/log-warper.cabal
@@ -1,5 +1,5 @@
 name:                log-warper
-version:             1.4.0
+version:             1.4.1
 synopsis:            Flexible, configurable, monadic and pretty logging
 homepage:            https://github.com/serokell/log-warper
 license:             MIT
diff --git a/src/System/Wlog/CanLog.hs b/src/System/Wlog/CanLog.hs
--- a/src/System/Wlog/CanLog.hs
+++ b/src/System/Wlog/CanLog.hs
@@ -20,6 +20,7 @@
        , PureLogger (..)
        , LogEvent   (..)
        , dispatchEvents
+       , logEvents
        , runPureLog
        , launchPureLog
 
@@ -36,24 +37,25 @@
        , logMessage
        ) where
 
-import           Control.Monad.Except      (ExceptT)
-import           Control.Monad.Morph       (MFunctor (..))
-import qualified Control.Monad.RWS         as RWSLazy
-import qualified Control.Monad.RWS.Strict  as RWSStrict
-import qualified Control.Monad.State.Lazy  as StateLazy
-import qualified Control.Monad.State.Strict  as StateStrict
-import           Control.Monad.Trans       (MonadTrans (lift))
-import qualified Data.DList                as DL (DList, snoc)
-import           Data.SafeCopy             (base, deriveSafeCopySimple)
 import           Universum
 
-import           System.Wlog.Logger        (logM)
-import           System.Wlog.LoggerName    (LoggerName (..))
-import           System.Wlog.LoggerNameBox (HasLoggerName (..), LoggerNameBox (..),
-                                            usingLoggerName)
-import           System.Wlog.Severity      (Severity (..))
+import           Control.Monad.Except       (ExceptT)
+import           Control.Monad.Morph        (MFunctor (..))
+import qualified Control.Monad.RWS          as RWSLazy
+import qualified Control.Monad.RWS.Strict   as RWSStrict
+import qualified Control.Monad.State.Lazy   as StateLazy
+import           Control.Monad.State.Strict (modify')
+import           Control.Monad.Trans        (MonadTrans (lift))
+import qualified Data.DList                 as DL (DList, snoc)
+import           Data.SafeCopy              (base, deriveSafeCopySimple)
 
+import           System.Wlog.Logger         (logM)
+import           System.Wlog.LoggerName     (LoggerName (..))
+import           System.Wlog.LoggerNameBox  (HasLoggerName (..), LoggerNameBox (..),
+                                             usingLoggerName)
+import           System.Wlog.Severity       (Severity (..))
 
+
 -- | Type alias for constraints 'CanLog' and 'HasLoggerName'.
 -- We need two different type classes to support more flexible interface
 -- but in practice we usually use them both.
@@ -100,12 +102,12 @@
 -- TODO: Should we use some @Data.Tree@-like structure to observe message only
 -- by chosen logger names?
 newtype PureLogger m a = PureLogger
-    { runPureLogger :: StateStrict.StateT (DL.DList LogEvent) m a
+    { runPureLogger :: StateT (DL.DList LogEvent) m a
     } deriving (Functor, Applicative, Monad, MonadTrans, MonadState (DL.DList LogEvent),
                 MonadThrow, HasLoggerName)
 
 instance Monad m => CanLog (PureLogger m) where
-    dispatchMessage leLoggerName leSeverity leMessage = StateStrict.modify' (flip DL.snoc LogEvent{..})
+    dispatchMessage leLoggerName leSeverity leMessage = modify' (flip DL.snoc LogEvent{..})
 
 instance MFunctor PureLogger where
     hoist f = PureLogger . hoist f . runPureLogger
@@ -120,6 +122,15 @@
 dispatchEvents = mapM_ dispatchLogEvent
   where
     dispatchLogEvent (LogEvent name sev t) = dispatchMessage name sev t
+
+-- | Logs all 'LogEvent'`s from given list. Just like
+-- 'dispatchEvents' but uses proper logger Name.
+logEvents :: WithLogger m => [LogEvent] -> m ()
+logEvents events = do
+    logName <- getLoggerName
+    mapM_ (dispatchLogEvent logName) events
+  where
+    dispatchLogEvent logName (LogEvent _ sev t) = dispatchMessage logName sev t
 
 -- | Performs actual logging once given action completes.
 launchPureLog
