# log
[](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"
```