diff --git a/src/Yam/Logger.hs b/src/Yam/Logger.hs
--- a/src/Yam/Logger.hs
+++ b/src/Yam/Logger.hs
@@ -1,12 +1,11 @@
 module Yam.Logger(
     LogRank(..)
-  , Logger
   , LoggerConfig(..)
-  , LogFunc
+  , LoggerMonad(..)
   , defaultLoggerConfig
   , stdoutLoggerConfig
-  , toApacheLogger
   , toMonadLogger
+  , addVaultToLoggerConfig
   , logger
   , logL
   , logLn
@@ -15,16 +14,19 @@
   , infoLn
   , warnLn
   , errorLn
+  , toLogStr
+  , (<>)
   ) where
 
-import           Control.Monad           (when)
-import           Control.Monad.IO.Class  (MonadIO, liftIO)
+import           Yam.Config.Vault
+
+import           Control.Monad          (when)
+import           Control.Monad.IO.Class (MonadIO, liftIO)
 import           Control.Monad.Logger
 import           Data.Aeson
-import           Data.Monoid             ((<>))
-import           Data.String.Conversions (cs)
-import           Data.Text               (Text, intercalate, pack)
-import           Network.Wai.Logger
+import           Data.Monoid
+import           Data.Text              (Text)
+import           Data.Vault.Lazy
 import           System.Log.FastLogger
 
 data LogRank
@@ -49,16 +51,20 @@
 type Clock  = IO FormattedTime
 
 data LoggerConfig = LoggerConfig
-  { func  :: Logger
-  , clock :: Clock
-  , names :: [Text]
-  , rank  :: LogRank
+  { func     :: Logger
+  , clock    :: Clock
+  , logKey   :: Key Text
+  , traceKey :: Key Text
+  , rank     :: LogRank
+  , logVault :: Vault
   }
 
 defaultLoggerConfig :: IO LoggerConfig
 defaultLoggerConfig = do
   c <- newTimeCache "%F %X"
-  return $ LoggerConfig (\_ -> return ()) c [] INFO
+  k <- newKey
+  t <- newKey
+  return $ LoggerConfig (\_ -> return ()) c k t INFO empty
 
 stdoutLoggerConfig :: IO LoggerConfig
 stdoutLoggerConfig = do
@@ -66,14 +72,6 @@
   ls <- newStdoutLoggerSet 4096
   return lc { func = pushLogStr ls }
 
-logger :: LoggerConfig -> LogRank -> Logger
-logger LoggerConfig{..} r str = when (r >= rank) $ do
-  now <- clock
-  func $ toLogStr (cs now <> " [" <> pack (show r) <> "] - " <> intercalate "." names <> " - ") <> str
-
-toApacheLogger :: LoggerConfig -> IO ApacheLoggerActions
-toApacheLogger lc@LoggerConfig{..} = initLogger FromFallback (LogCallback (logger lc INFO) (return ())) clock
-
 toRank :: LogLevel -> LogRank
 toRank LevelDebug = DEBUG
 toRank LevelInfo  = INFO
@@ -84,26 +82,45 @@
 type LogFunc = Loc -> LogSource -> LogLevel -> LogStr -> IO ()
 
 toMonadLogger :: LoggerConfig -> LogFunc
-toMonadLogger lc@LoggerConfig{..} _ ls level str = logger lc {names=ls:names} (toRank level) str
+toMonadLogger lc@LoggerConfig{..} _ ls level = logger lc { logVault = addFirstVault ls "." logKey logVault} (toRank level)
 
-logL :: forall msg . (ToLogStr msg) => LoggerConfig -> LogRank -> msg -> IO ()
-logL lc rank = logger lc rank . toLogStr
+addVaultToLoggerConfig :: Vault -> LoggerConfig -> LoggerConfig
+addVaultToLoggerConfig vault lc = lc {logVault = union vault $ logVault lc}
 
-logLn :: LoggerConfig -> LogRank -> Text -> IO ()
-logLn lc rank msg = logL lc rank $ msg <> "\n"
+logger :: LoggerConfig -> LogRank -> Logger
+logger LoggerConfig{..} r str = when (r >= rank) $ do
+  now <- clock
+  let nm :: Text
+      nm = extracBoxOrDefault "" $ newBox logKey logVault
+      ti :: Text
+      ti = extracBoxOrDefault "" (newBox traceKey logVault)
+  func $ toLogStr now <> " [" <> toLogStr (show r) <> "] - [" <> toLogStr ti <> "] " <> toLogStr nm <> " - " <> str
 
-traceLn :: MonadIO m => LoggerConfig -> Text -> m ()
-traceLn lc = liftIO . logLn lc TRACE
+class MonadIO m => LoggerMonad m where
+  loggerConfig :: m LoggerConfig
+
+logL :: (ToLogStr msg, LoggerMonad m) => LogRank -> msg -> m ()
+logL rank msg = do
+  lc <- loggerConfig
+  liftIO $ logger lc rank $ toLogStr msg
+
+logLn :: (ToLogStr msg, LoggerMonad m) => LogRank -> msg -> m ()
+logLn rank msg = do
+  lc <- loggerConfig
+  liftIO $ logger lc rank $ toLogStr msg <> "\n"
+
+traceLn :: (ToLogStr msg, LoggerMonad m) => msg -> m ()
+traceLn = logLn TRACE
 {-# INLINE traceLn #-}
-debugLn :: MonadIO m => LoggerConfig -> Text -> m ()
-debugLn lc = liftIO . logLn lc DEBUG
+debugLn :: (ToLogStr msg, LoggerMonad m) => msg -> m ()
+debugLn = logLn DEBUG
 {-# INLINE debugLn #-}
-infoLn  :: MonadIO m => LoggerConfig -> Text -> m ()
-infoLn  lc = liftIO . logLn lc INFO
+infoLn  :: (ToLogStr msg, LoggerMonad m) => msg -> m ()
+infoLn  = logLn INFO
 {-# INLINE infoLn #-}
-warnLn  :: MonadIO m => LoggerConfig -> Text -> m ()
-warnLn  lc = liftIO . logLn lc WARN
+warnLn  :: (ToLogStr msg, LoggerMonad m) => msg -> m ()
+warnLn  = logLn WARN
 {-# INLINE warnLn #-}
-errorLn :: MonadIO m => LoggerConfig -> Text -> m ()
-errorLn lc = liftIO . logLn lc ERROR
+errorLn :: (ToLogStr msg, LoggerMonad m) => msg -> m ()
+errorLn = logLn ERROR
 {-# INLINE errorLn #-}
diff --git a/yam-logger.cabal b/yam-logger.cabal
--- a/yam-logger.cabal
+++ b/yam-logger.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 5020ace9bd9b1a416b56fe78d643020b75f7a4dbfa57e8be43020d42e090cd64
+-- hash: d1cea5416c6a6f0df10ed8a1216938a37672887a8959f71b104cdb44524ee921
 
 name:           yam-logger
-version:        0.3.1
+version:        0.3.2
 synopsis:       Yam Logger
 description:    logger module for yam
 category:       Project
@@ -36,7 +36,7 @@
     , base >=4.7 && <5
     , fast-logger
     , monad-logger
-    , string-conversions
     , text
-    , wai-logger
+    , vault
+    , yam-config
   default-language: Haskell2010
