packages feed

log 0.1.1 → 0.2.0

raw patch · 7 files changed

+16/−5 lines, 7 files

Files

log.cabal view
@@ -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.
src/Log/Backend/PostgreSQL.hs view
@@ -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"       , ")"
src/Log/Backend/StandardOutput.hs view
@@ -25,7 +25,7 @@   , " "   , textifyLevel lmLevel   , " "-  , lmComponent+  , T.intercalate "/" $ lmComponent : lmDomain   , ": "   , lmMessage   ] ++ if lmData == emptyObject
src/Log/Class.hs view
@@ -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  ---------------------------------------- 
src/Log/Class/Instances.hs view
@@ -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
src/Log/Data.hs view
@@ -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
src/Log/Monad.hs view
@@ -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