git.iko.soy/typeable/control-logger
on master help sign in
Drop bloodhound
db6986aVille Tirronen
control-logger.cabal−1
@@ -17,7 +17,6 @@ library
17 exposed-modules: Control.Logger.Internal
17 exposed-modules: Control.Logger.Internal
18 build-depends: base
18 build-depends: base
19 , aeson
19 , aeson
20− , bloodhound
21 , bytestring
20 , bytestring
22 , control-has
21 , control-has
23 , control-has-katip
22 , control-has-katip
src/Control/Logger/Katip.hs+1−64
@@ -2,10 +2,7 @@
2{-# OPTIONS_GHC -fno-warn-orphans #-}
2{-# OPTIONS_GHC -fno-warn-orphans #-}
3
3
4module Control.Logger.Katip
4module Control.Logger.Katip
5− ( ElasticServer(..)
6− , logSeverityToKSeverity
5+ ( logSeverityToKSeverity
7− , registerElastic
8− , maybeElastic
9 , KatipContextTState(..)
6 , KatipContextTState(..)
10 , getKatipLogger
7 , getKatipLogger
11 , ourFormatter
8 , ourFormatter
@@ -20,43 +17,18 @@ import Control.Lens hiding ((.=))
20import Control.Logger.Internal
17import Control.Logger.Internal
21import Control.Logger.Katip.Scribes.Reopenable
18import Control.Logger.Katip.Scribes.Reopenable
22import Data.Aeson hiding (Error)
19import Data.Aeson hiding (Error)
23−import Data.ByteString (ByteString)
24import qualified Data.HashMap.Strict as HM
20import qualified Data.HashMap.Strict as HM
25import Data.Proxy as P
21import Data.Proxy as P
26import Data.Text (Text)
22import Data.Text (Text)
27import qualified Data.Text as T
23import qualified Data.Text as T
28−import qualified Data.Text.Encoding as T
29import qualified Data.Text.Lazy.Builder as T.Builder
24import qualified Data.Text.Lazy.Builder as T.Builder
30−import Database.V5.Bloodhound
31import Katip as K hiding (logMsg)
25import Katip as K hiding (logMsg)
32import Katip.Core (ItemFunc(..), LocJs(..), ProcessIDJs(..))
26import Katip.Core (ItemFunc(..), LocJs(..), ProcessIDJs(..))
33import Katip.Monadic (KatipContextTState(..))
27import Katip.Monadic (KatipContextTState(..))
34import Katip.Scribes.ElasticSearch
28import Katip.Scribes.ElasticSearch
35import Katip.Scribes.ElasticSearch.Internal as K
29import Katip.Scribes.ElasticSearch.Internal as K
36−import Network.HTTP.Client
37
30
38
31
39−data ElasticServer = ElasticServer
40− { _esServer :: !(Maybe Server)
41− , _esUsername :: !(Maybe ByteString)
42− , _esPassword :: !(Maybe ByteString)
43− } deriving (Eq, Show)
44−
45−instance FromJSON ElasticServer where
46− parseJSON = withObject "ElasticServer" $ \obj -> ElasticServer
47− <$> (obj .: "server")
48− <*> (fmap T.encodeUtf8 <$> (obj .: "username"))
49− <*> (fmap T.encodeUtf8 <$> (obj .: "password"))
50−
51−instance ToJSON ElasticServer where
52− toJSON es = object
53− [ "server" .= fmap fromServer (_esServer es)
54− , "username" .= fmap T.decodeUtf8 (_esUsername es)
55− , "password" .= fmap T.decodeUtf8 (_esPassword es)
56− ]
57− where
58− fromServer (Server s) = s
59−
60logSeverityToKSeverity :: LogSeverity -> Severity
32logSeverityToKSeverity :: LogSeverity -> Severity
61logSeverityToKSeverity = \case
33logSeverityToKSeverity = \case
62 Debug -> DebugS
34 Debug -> DebugS
@@ -64,35 +36,6 @@ logSeverityToKSeverity = \case
64 Warn -> WarningS
36 Warn -> WarningS
65 Error -> ErrorS
37 Error -> ErrorS
66
38
67−registerElastic
68− :: Text
69− -- ^ git revision
70− -> Verbosity
71− -> ElasticServer
72− -> PermitFunc
73− -> LogEnv
74− -> IO LogEnv
75−registerElastic gitRev verbosity ElasticServer{..} permitF env =
76− case _esServer of
77− Nothing -> return env
78− Just server -> do
79− elastic <- do
80− mgr <- newManager defaultManagerSettings
81− let
82− bloodhoundEnv = (mkBHEnv server mgr)
83− { bhRequestHook = requestHook }
84− mkEsScribe cfg bloodhoundEnv permitF verbosity
85− registerScribe "elastic" elastic defaultScribeSettings env
86− where
87− cfg = (defaultEsScribeCfgV5 ixName mappingName)
88− { essItemFormatter = ourFormatter gitRev
89− , essIndexMappingValue = ourMapping mappingName }
90− where
91− ixName = IndexName katipIndexNameString
92− mappingName = MappingName "logs"
93− requestHook = return . case (_esUsername, _esPassword) of
94− (Just u, Just p) -> applyBasicAuth u p
95− _ -> id
96
39
97-- | Adds the @rev-hash@ value to each record.
40-- | Adds the @rev-hash@ value to each record.
98-- Early we copied `msg` to `msg-keyword` here but drop it
41-- Early we copied `msg` to `msg-keyword` here but drop it
@@ -168,12 +111,6 @@ ourItemJson verb item = formatItem $
168 , "loc" .= fmap LocJs _itemLoc
111 , "loc" .= fmap LocJs _itemLoc
169 ]
112 ]
170
113
171−-- | Return empty server if Nothing
172−maybeElastic :: Maybe ElasticServer -> ElasticServer
173−maybeElastic = \case
174− Nothing -> ElasticServer Nothing Nothing Nothing
175− Just a -> a
176−
177instance LogItem Object where
114instance LogItem Object where
178 payloadKeys V0 _ = SomeKeys []
115 payloadKeys V0 _ = SomeKeys []
179 payloadKeys _ _ = AllKeys
116 payloadKeys _ _ = AllKeys
src/Control/Logger/Katip/Utils.hs−37
@@ -3,10 +3,6 @@
3module Control.Logger.Katip.Utils
3module Control.Logger.Katip.Utils
4 ( katipIndexNameString
4 ( katipIndexNameString
5 , module Katip.Monadic
5 , module Katip.Monadic
6− , ElasticServer(..)
7− , elasticServer
8− , maybeElastic
9− , registerElastic
10 , LogFormat(..)
6 , LogFormat(..)
11 , registerFileScribe
7 , registerFileScribe
12 , setLoggingCtx
8 , setLoggingCtx
@@ -25,51 +21,18 @@ import Control.Logger.Internal as L
25import Control.Logger.Katip as L
21import Control.Logger.Katip as L
26import Data.Aeson hiding (Error)
22import Data.Aeson hiding (Error)
27import Data.Aeson.Text
23import Data.Aeson.Text
28−import Data.ByteString (ByteString)
29import qualified Data.ByteString.Builder as B.Builder
24import qualified Data.ByteString.Builder as B.Builder
30import qualified Data.HashMap.Strict as HM
25import qualified Data.HashMap.Strict as HM
31import Data.Text (Text)
26import Data.Text (Text)
32−import qualified Data.Text as T
33−import Data.Text.Encoding
34import qualified Data.Text.Lazy.Builder as T.Builder
27import qualified Data.Text.Lazy.Builder as T.Builder
35import qualified Data.Text.Lazy.Encoding as T.Lazy
28import qualified Data.Text.Lazy.Encoding as T.Lazy
36−import Database.V5.Bloodhound as BH
37import Katip as K hiding (logMsg)
29import Katip as K hiding (logMsg)
38import Katip.Core (ItemFunc(..))
30import Katip.Core (ItemFunc(..))
39import Katip.Monadic (KatipContextTState(..))
31import Katip.Monadic (KatipContextTState(..))
40import qualified Katip.Scribes.Handle as K
32import qualified Katip.Scribes.Handle as K
41−import Options.Applicative
42import System.IO
33import System.IO
43
34
44
35
45−elasticServer :: Parser ElasticServer
46−elasticServer =
47− ElasticServer
48− <$> optional elasticServerAddress
49− <*> optional elasticServerUsername
50− <*> optional elasticServerPassword
51−
52−elasticServerAddress :: Parser Server
53−elasticServerAddress = Server <$> option
54− (T.pack <$> str)
55− (long "elastic-server" <> metavar "ELASTIC_SERVER" <> help
56− "Address of elastic search server"
57− )
58−
59−elasticServerUsername :: Parser ByteString
60−elasticServerUsername = option
61− (encodeUtf8 . T.pack <$> str)
62− (long "elastic-server-username" <> metavar "ELASTIC_SERVER_USERNAME" <> help
63− "Elastic server username"
64− )
65−
66−elasticServerPassword :: Parser ByteString
67−elasticServerPassword = option
68− (encodeUtf8 . T.pack <$> str)
69− (long "elastic-server-password" <> metavar "ELASTIC_SERVER_PASSWORD" <> help
70− "Elastic server password"
71− )
72−
73-- | How to format logs
36-- | How to format logs
74data LogFormat
37data LogFormat
75 = LogBracket -- ^ use `bracketFormat`
38 = LogBracket -- ^ use `bracketFormat`