packages feed

yam-logger 0.3.1 → 0.3.2

raw patch · 2 files changed

+58/−41 lines, 2 filesdep +vaultdep +yam-configdep −string-conversionsdep −wai-logger

Dependencies added: vault, yam-config

Dependencies removed: string-conversions, wai-logger

Files

src/Yam/Logger.hs view
@@ -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 #-}
yam-logger.cabal view
@@ -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