diff --git a/log.cabal b/log.cabal
--- a/log.cabal
+++ b/log.cabal
@@ -1,5 +1,5 @@
 name:                log
-version:             0.1.1
+version:             0.2.0
 synopsis:            Structured logging solution with multiple backends
 
 description:         A library that provides a way to record structured log messages with multiple backends.
diff --git a/src/Log/Backend/PostgreSQL.hs b/src/Log/Backend/PostgreSQL.hs
--- a/src/Log/Backend/PostgreSQL.hs
+++ b/src/Log/Backend/PostgreSQL.hs
@@ -19,7 +19,7 @@
 pgLogger cs = mkBulkLogger "PostgreSQL" $ mapM_ serialize . chunksOf 1000
   where
     serialize :: [LogMessage] -> IO ()
-    serialize msgs = runDBT cs ts (runSQL_ $ "INSERT INTO logs (insertion_time, insertion_order, time, level, component, message, data) VALUES" <+> mintercalate ", " (map sqlifyMessage $ zip [1..] msgs)) `catches` [
+    serialize msgs = runDBT cs ts (runSQL_ $ "INSERT INTO logs (insertion_time, insertion_order, time, level, component, domain, message, data) VALUES" <+> mintercalate ", " (map sqlifyMessage $ zip [1..] msgs)) `catches` [
         Handler $ \(e::AsyncException) -> throwIO e
       , Handler $ \(e::SomeException) -> do
         putStrLn $ "PostgreSQL: couldn't serialize logs: " ++ show e ++ ", retrying in 10 seconds"
@@ -35,6 +35,7 @@
       , "," <?> lmTime
       , "," <?> sqlifyLevel lmLevel
       , "," <?> lmComponent
+      , "," <?> Array1 lmDomain
       , "," <?> lmMessage
       , "," <?> toStrict (encode lmData) <> "::jsonb"
       , ")"
diff --git a/src/Log/Backend/StandardOutput.hs b/src/Log/Backend/StandardOutput.hs
--- a/src/Log/Backend/StandardOutput.hs
+++ b/src/Log/Backend/StandardOutput.hs
@@ -25,7 +25,7 @@
   , " "
   , textifyLevel lmLevel
   , " "
-  , lmComponent
+  , T.intercalate "/" $ lmComponent : lmDomain
   , ": "
   , lmMessage
   ] ++ if lmData == emptyObject
diff --git a/src/Log/Class.hs b/src/Log/Class.hs
--- a/src/Log/Class.hs
+++ b/src/Log/Class.hs
@@ -22,8 +22,9 @@
 
 -- | Represents the family of monads with logging capabilities.
 class MonadTime m => MonadLog m where
-  logMessage :: UTCTime -> LogLevel -> T.Text -> Value -> m ()
-  localData :: [Pair] -> m a -> m a
+  logMessage  :: UTCTime -> LogLevel -> T.Text -> Value -> m ()
+  localData   :: [Pair] -> m a -> m a
+  localDomain :: T.Text -> m a -> m a
 
 ----------------------------------------
 
diff --git a/src/Log/Class/Instances.hs b/src/Log/Class/Instances.hs
--- a/src/Log/Class/Instances.hs
+++ b/src/Log/Class/Instances.hs
@@ -16,6 +16,7 @@
   ) => MonadLog (t m) where
     logMessage time level message = lift . logMessage time level message
     localData data_ m = controlT $ \run -> localData data_ (run m)
+    localDomain domain m = controlT $ \run -> localDomain domain (run m)
 
 controlT :: (MonadTransControl t, Monad (t m), Monad m)
          => (Run t -> m (StT t a)) -> t m a
diff --git a/src/Log/Data.hs b/src/Log/Data.hs
--- a/src/Log/Data.hs
+++ b/src/Log/Data.hs
@@ -20,6 +20,8 @@
 data LogMessage = LogMessage {
   -- | Component of an application.
   lmComponent :: !Text
+  -- | Aplication log domain.
+, lmDomain    :: ![Text]
   -- | Time of log.
 , lmTime      :: !UTCTime
   -- | Log level.
@@ -32,6 +34,7 @@
 
 instance NFData LogMessage where
   rnf LogMessage{..} = rnf lmComponent
+    `seq` rnf lmDomain
     `seq` rnf lmTime
     `seq` rnf lmLevel
     `seq` rnf lmMessage
diff --git a/src/Log/Monad.hs b/src/Log/Monad.hs
--- a/src/Log/Monad.hs
+++ b/src/Log/Monad.hs
@@ -30,6 +30,7 @@
 data LoggerEnv = LoggerEnv {
   leLogger    :: !Logger
 , leComponent :: !Text
+, leDomain    :: ![Text]
 , leData      :: ![Pair]
 }
 
@@ -43,6 +44,7 @@
 runLogT component logger m = runReaderT (unLogT m) LoggerEnv {
   leLogger = logger
 , leComponent = component
+, leDomain = []
 , leData = []
 }
 
@@ -83,6 +85,7 @@
         where
           lm = LogMessage {
             lmComponent = leComponent
+          , lmDomain = leDomain
           , lmTime = time
           , lmLevel = level
           , lmMessage = message
@@ -93,3 +96,5 @@
           }
 
   localData data_ = LogT . local (\e -> e { leData = data_ ++ leData e }) . unLogT
+
+  localDomain domain = LogT . local (\e -> e { leDomain = leDomain e ++ [domain] }) . unLogT
