log-postgres 0.8.1.0 → 0.9.0.0
raw patch · 4 files changed
+52/−14 lines, 4 filesdep +unliftio-coredep ~log-basePVP ok
version bump matches the API change (PVP)
Dependencies added: unliftio-core
Dependency ranges changed: log-base
API changes (from Hackage documentation)
- Log.Backend.PostgreSQL: pgLogger :: ConnectionSourceM IO -> IO Logger
- Log.Backend.PostgreSQL: withPgLogger :: ConnectionSourceM IO -> (Logger -> IO r) -> IO r
+ Log.Backend.PostgreSQL: withPgLogger :: MonadUnliftIO m => ConnectionSourceM IO -> (Logger -> m r) -> m r
Files
- CHANGELOG.md +4/−0
- README.md +39/−2
- log-postgres.cabal +4/−4
- src/Log/Backend/PostgreSQL.hs +5/−8
CHANGELOG.md view
@@ -1,3 +1,7 @@+# log-postgres-0.9.0.0 (2022-09-21)+* Remove deprecated `pgLogger`.+* Generalize logger related functions to `MonadUnliftIO`.+ # log-postgres-0.8.1.0 (2022-04-04) * Add support for aeson 2.0.1.0. * Add support for GHC 9.2.
README.md view
@@ -1,3 +1,40 @@-# log-postgres [](https://hackage.haskell.org/package/log-postgres) [](http://travis-ci.org/scrive/log)+# log -PostgreSQL back end for the `log` library suite.+[](https://hackage.haskell.org/package/log-base)+[](https://github.com/scrive/log/actions?query=branch%3Amaster)++A set of libraries that provide a way to record structured log messages with+multiple backends.++Supported backends:++* Standard output via+ [`log-base`](https://hackage.haskell.org/package/log-base).+* Elasticsearch via+ [`log-elasticsearch`](https://hackage.haskell.org/package/log-elasticsearch).+* PostgreSQL via+ [`log-postgres`](https://hackage.haskell.org/package/log-postgres).++## Example++A sample usage for logging to both standard output and Elasticsearch:++```haskell+{-# LANGUAGE OverloadedStrings #-}+module Main where++import Log+import Log.Backend.ElasticSearch+import Log.Backend.StandardOutput++main :: IO ()+main = do+ let config = defaultElasticSearchConfig+ { esServer = "http://localhost:9200"+ , esIndex = "logs"+ }+ withStdOutLogger $ \stdoutLogger -> do+ withElasticSearchLogger config $ \esLogger -> do+ runLogT "main" (stdoutLogger <> esLogger) defaultLogLevel $ do+ logInfo_ "Hi there"+```
log-postgres.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.0 name: log-postgres-version: 0.8.1.0+version: 0.9.0.0 synopsis: Structured logging solution (PostgreSQL back end) description: PostgreSQL back end for the 'log' library suite.@@ -18,7 +18,7 @@ category: System build-type: Simple extra-source-files: CHANGELOG.md, README.md-tested-with: GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.2+tested-with: GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.4 || ==9.4.2 Source-repository head Type: git@@ -35,13 +35,14 @@ , hpqtypes >= 1.9.1.2 , http-client >= 0.5 , lifted-base >= 0.2- , log-base >= 0.10 && < 0.12+ , log-base >= 0.10 && < 0.13 , mtl >= 2.2 , semigroups >= 0.16 , split >= 0.2 , text >= 1.2 , text-show >= 3.7 , time >= 1.6+ , unliftio-core >= 0.2 , unordered-containers >= 0.2 , vector >= 0.12 @@ -56,7 +57,6 @@ , GeneralizedNewtypeDeriving , LambdaCase , MultiParamTypeClasses- , NoImplicitPrelude , OverloadedStrings , RankNTypes , RecordWildCards
src/Log/Backend/PostgreSQL.hs view
@@ -1,17 +1,16 @@ -- | PostgreSQL logging back-end.-module Log.Backend.PostgreSQL (pgLogger, withPgLogger) where+module Log.Backend.PostgreSQL (withPgLogger) where -import Control.Applicative import Control.Concurrent import Control.Exception.Lifted import Control.Monad.State.Lazy+import Control.Monad.IO.Unlift import Data.Aeson ((.=), Value(..), object, encode) import Data.List.Split import Data.Monoid.Utils import Data.String import Data.Typeable import Database.PostgreSQL.PQTypes-import Prelude import qualified Data.ByteString.Base64 as B64 import qualified Data.Foldable as Foldable import qualified Data.Text as T@@ -29,12 +28,10 @@ -- | Create a 'pgLogger' for the duration of the given action, and -- shut it down afterwards, making sure that all buffered messages are -- actually written to the DB.-withPgLogger :: ConnectionSourceM IO -> (Logger -> IO r) -> IO r-withPgLogger cs act = do+withPgLogger :: MonadUnliftIO m => ConnectionSourceM IO -> (Logger -> m r) -> m r+withPgLogger cs act = withRunInIO $ \unlift -> do logger <- pgLogger cs- withLogger logger act--{-# DEPRECATED pgLogger "Use 'withPgLogger' instead!" #-}+ withLogger logger (unlift . act) -- | Start an asynchronous logger thread that inserts log messages -- into a PostgreSQL database.