diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,9 @@
+1.5.2
+=====
+
+* Add `logPureAction` to `PureLogging`.
+* Add `withSublogger` to `HasLoggerName`.
+
 1.5.1
 =====
 
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.5.1
+version:             1.5.2
 synopsis:            Flexible, configurable, monadic and pretty logging
 homepage:            https://github.com/serokell/log-warper
 license:             MIT
diff --git a/src/System/Wlog/HasLoggerName.hs b/src/System/Wlog/HasLoggerName.hs
--- a/src/System/Wlog/HasLoggerName.hs
+++ b/src/System/Wlog/HasLoggerName.hs
@@ -10,6 +10,7 @@
        ( -- * Remove boilerplater
          HasLoggerName (..)
        , setLoggerName
+       , withSublogger
        ) where
 
 import           Universum
@@ -65,3 +66,7 @@
 -- | Set logger name in context.
 setLoggerName :: HasLoggerName m => LoggerName -> m a -> m a
 setLoggerName = modifyLoggerName . const
+
+-- | Change logger name to the given one
+withSublogger :: HasLoggerName m => LoggerName -> m a -> m a
+withSublogger name = modifyLoggerName (<> name)
diff --git a/src/System/Wlog/PureLogging.hs b/src/System/Wlog/PureLogging.hs
--- a/src/System/Wlog/PureLogging.hs
+++ b/src/System/Wlog/PureLogging.hs
@@ -20,7 +20,8 @@
        , NamedPureLogger (..)
        , runNamedPureLog
        , launchNamedPureLog
-       , usingPureLoggerName
+       , usingNamedPureLogger
+       , logPureAction
        ) where
 
 import           Universum
@@ -126,9 +127,17 @@
     res <$ dispatchEvents logs
 
 -- | Similar to 'runNamedPureLog', but using provided logger name.
-usingPureLoggerName :: Functor m
-                    => LoggerName
-                    -> NamedPureLogger m a
-                    -> m (a, [LogEvent])
-usingPureLoggerName name (NamedPureLogger action) =
+usingNamedPureLogger :: Functor m
+                     => LoggerName
+                     -> NamedPureLogger m a
+                     -> m (a, [LogEvent])
+usingNamedPureLogger name (NamedPureLogger action) =
     usingLoggerName name $ runPureLog action
+
+-- | Perform pure-logging computation, log its events
+-- and return the result of the computation
+logPureAction :: WithLogger m => NamedPureLogger m a -> m a
+logPureAction namedPureLogger = do
+    loggerName  <- askLoggerName
+    (a, events) <- usingNamedPureLogger loggerName namedPureLogger
+    a <$ dispatchEvents events
