git.iko.soy/typeable/control-logger
on master help sign in
Merge pull request #1 from typeable/ville/drop-bloodhound

Drop bloodhound

commit588cf7c7a84fcb2dc27df824891a83a6058af80a authorVille Tirronen <ville@typeable.io> dateWed 23 Mar 2022, 09:01 (5 years ago) parent9703d9f31ab779
4 files changed+2−143
.gitignore+1 control-logger.cabal−2 src/Control/Logger/Katip.hs+1−103 src/Control/Logger/Katip/Utils.hs−38
.gitignorenew file+1
@@ -0,0 +1 @@
1+.stack-work
control-logger.cabal−2
@@ -17,7 +17,6 @@ library
1717 exposed-modules: Control.Logger.Internal
1818 build-depends: base
1919 , aeson
20− , bloodhound
2120 , bytestring
2221 , control-has
2322 , control-has-katip
@@ -34,7 +33,6 @@ library
3433 , unordered-containers
3534 if !impl(ghcjs)
3635 build-depends: katip
37− , katip-elasticsearch
3836 , optparse-applicative
3937 default-language: Haskell2010
4038 default-extensions: RankNTypes
src/Control/Logger/Katip.hs+1−103
@@ -2,14 +2,10 @@
22{-# OPTIONS_GHC -fno-warn-orphans #-}
33
44module Control.Logger.Katip
5− ( ElasticServer(..)
6− , logSeverityToKSeverity
7− , registerElastic
8− , maybeElastic
5+ ( logSeverityToKSeverity
96 , KatipContextTState(..)
107 , getKatipLogger
118 , ourFormatter
12− , ourMapping
139 , katipIndexNameString
1410 , reopenableFileLog
1511 ) where
@@ -20,43 +16,15 @@ import Control.Lens hiding ((.=))
2016import Control.Logger.Internal
2117import Control.Logger.Katip.Scribes.Reopenable
2218import Data.Aeson hiding (Error)
23−import Data.ByteString (ByteString)
2419import qualified Data.HashMap.Strict as HM
25−import Data.Proxy as P
2620import Data.Text (Text)
2721import qualified Data.Text as T
28−import qualified Data.Text.Encoding as T
2922import qualified Data.Text.Lazy.Builder as T.Builder
30−import Database.V5.Bloodhound
3123import Katip as K hiding (logMsg)
3224import Katip.Core (ItemFunc(..), LocJs(..), ProcessIDJs(..))
3325import Katip.Monadic (KatipContextTState(..))
34−import Katip.Scribes.ElasticSearch
35−import Katip.Scribes.ElasticSearch.Internal as K
36−import Network.HTTP.Client
3726
3827
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−
6028logSeverityToKSeverity :: LogSeverity -> Severity
6129logSeverityToKSeverity = \case
6230 Debug -> DebugS
@@ -64,35 +32,6 @@ logSeverityToKSeverity = \case
6432 Warn -> WarningS
6533 Error -> ErrorS
6634
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
9635
9736-- | Adds the @rev-hash@ value to each record.
9837-- Early we copied `msg` to `msg-keyword` here but drop it
@@ -112,41 +51,6 @@ ourFormatter gitRev verb = ItemFunc $ \item -> go $ ourItemJson verb item
11251 setRev :: HM.HashMap Text Value -> HM.HashMap Text Value
11352 setRev = HM.insert "rev-hash" (toJSON gitRev)
11453
115−ourMapping :: K.MappingName ESV5 -> Value
116−ourMapping mn = object
117− [fromMappingName prx mn .= object ["properties" .= object prs]]
118− where
119− prs =
120− [ unanalyzedString "thread"
121− , unanalyzedString "sev"
122− , unanalyzedString "pid"
123− -- ns is frequently fulltext searched
124− , analyzedString "ns"
125− -- we want message to be fulltext searchable
126− , analyzedString "msg"
127− -- we want to group by the message as well
128− , unanalyzedString "msg-keyword"
129− -- we want to group by revision hash
130− , unanalyzedString "rev-hash"
131− , "loc" .= locType
132− , unanalyzedString "host"
133− , unanalyzedString "env"
134− , "at" .= dateType
135− , unanalyzedString "app"
136− ]
137− prx = P.Proxy :: P.Proxy ESV5
138− unanalyzedString k = k .= unanalyzedStringSpec prx
139− analyzedString k = k .= analyzedStringSpec prx
140− locType = object ["properties" .= object locPairs]
141− locPairs =
142− [ unanalyzedString "loc_pkg"
143− , unanalyzedString "loc_mod"
144− , unanalyzedString "loc_ln"
145− , unanalyzedString "loc_fn"
146− , unanalyzedString "loc_col"
147− ]
148− dateType = object ["format" .= esDateFormat, "type" .= String "date"]
149−
15054katipIndexNameString :: Text
15155katipIndexNameString = "antorica-b2b-logs"
15256
@@ -168,12 +72,6 @@ ourItemJson verb item = formatItem $
16872 , "loc" .= fmap LocJs _itemLoc
16973 ]
17074
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−
17775instance LogItem Object where
17876 payloadKeys V0 _ = SomeKeys []
17977 payloadKeys _ _ = AllKeys
src/Control/Logger/Katip/Utils.hs−38
@@ -3,15 +3,10 @@
33module Control.Logger.Katip.Utils
44 ( katipIndexNameString
55 , module Katip.Monadic
6− , ElasticServer(..)
7− , elasticServer
8− , maybeElastic
9− , registerElastic
106 , LogFormat(..)
117 , registerFileScribe
128 , setLoggingCtx
139 , ourFormatter
14− , ourMapping
1510 , getKatipLogger
1611 , logSeverityToKSeverity
1712 ) where
@@ -25,51 +20,18 @@ import Control.Logger.Internal as L
2520import Control.Logger.Katip as L
2621import Data.Aeson hiding (Error)
2722import Data.Aeson.Text
28−import Data.ByteString (ByteString)
2923import qualified Data.ByteString.Builder as B.Builder
3024import qualified Data.HashMap.Strict as HM
3125import Data.Text (Text)
32−import qualified Data.Text as T
33−import Data.Text.Encoding
3426import qualified Data.Text.Lazy.Builder as T.Builder
3527import qualified Data.Text.Lazy.Encoding as T.Lazy
36−import Database.V5.Bloodhound as BH
3728import Katip as K hiding (logMsg)
3829import Katip.Core (ItemFunc(..))
3930import Katip.Monadic (KatipContextTState(..))
4031import qualified Katip.Scribes.Handle as K
41−import Options.Applicative
4232import System.IO
4333
4434
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−
7335-- | How to format logs
7436data LogFormat
7537 = LogBracket -- ^ use `bracketFormat`