Browse Source

Configurable loglevel

master
Denis Tereshkin 3 years ago
parent
commit
324202bdb7
  1. 5
      src/Config.hs
  2. 20
      src/Main.hs

5
src/Config.hs

@ -7,8 +7,10 @@ module Config
loadConfig, loadConfig,
) where ) where
import ATrade.Logging (Severity)
import qualified Data.Text as T import qualified Data.Text as T
import Dhall (FromDhall (autoWith), auto, expected, inputFile) import Dhall (FromDhall (autoWith), auto, expected,
inputFile)
import GHC.Generics import GHC.Generics
data SubscriptionConfig = SubscriptionConfig T.Text T.Text data SubscriptionConfig = SubscriptionConfig T.Text T.Text
@ -17,6 +19,7 @@ data SubscriptionConfig = SubscriptionConfig T.Text T.Text
instance FromDhall SubscriptionConfig instance FromDhall SubscriptionConfig
data TransaqConnectorConfig = TransaqConnectorConfig { data TransaqConnectorConfig = TransaqConnectorConfig {
logLevel :: Int,
quotesourceEndpoint :: T.Text, quotesourceEndpoint :: T.Text,
brokerEndpoint :: T.Text, brokerEndpoint :: T.Text,
brokerNotificationsEndpoint :: T.Text, brokerNotificationsEndpoint :: T.Text,

20
src/Main.hs

@ -6,14 +6,14 @@ import ATrade (libatrade_gitrev,
import ATrade.Broker.Protocol (NotificationSqnum (NotificationSqnum)) import ATrade.Broker.Protocol (NotificationSqnum (NotificationSqnum))
import ATrade.Broker.Server (startBrokerServer, import ATrade.Broker.Server (startBrokerServer,
stopBrokerServer) stopBrokerServer)
import ATrade.Logging (Message (..), Severity (Info), import ATrade.Logging (Message (..), Severity (Debug, Error, Info, Warning),
logWith) logWith)
import ATrade.Logging (fmtMessage) import ATrade.Logging (fmtMessage)
import ATrade.QuoteSource.Server (startQuoteSourceServer, import ATrade.QuoteSource.Server (startQuoteSourceServer,
stopQuoteSourceServer) stopQuoteSourceServer)
import ATrade.Types (defaultServerSecurityParams) import ATrade.Types (defaultServerSecurityParams)
import Colog (LogAction, logTextStdout, import Colog (LogAction, cfilter,
(>$<)) logTextStdout, (>$<))
import Colog.Actions (logTextHandle) import Colog.Actions (logTextHandle)
import Config (TransaqConnectorConfig (..), import Config (TransaqConnectorConfig (..),
loadConfig) loadConfig)
@ -34,15 +34,23 @@ import TickerInfoServer (withTickerInfoServer)
import qualified TXMLConnector as Connector import qualified TXMLConnector as Connector
import Version (transaqConnectorVersionText) import Version (transaqConnectorVersionText)
mkLogger :: (MonadIO m) => Handle -> LogAction m Message mkLogger :: (MonadIO m) => Handle -> Severity -> LogAction m Message
mkLogger h = fmtMessage >$< (logTextStdout <> logTextHandle h) mkLogger h sev = cfilter (\m -> msgSeverity m > sev) (fmtMessage >$< (logTextStdout <> logTextHandle h))
parseLoglevel :: Int -> Severity
parseLoglevel 0 = Error
parseLoglevel 1 = Warning
parseLoglevel 2 = Info
parseLoglevel _ = Debug
main :: IO () main :: IO ()
main = do main = do
initEventCounters initEventCounters
cfg <- loadConfig "transaq-connector.dhall" cfg <- loadConfig "transaq-connector.dhall"
let loglevel = parseLoglevel (logLevel cfg)
withFile "transaq-connector.log" AppendMode $ \logH -> do withFile "transaq-connector.log" AppendMode $ \logH -> do
let logger = mkLogger logH let logger = mkLogger logH loglevel
let log = logWith logger let log = logWith logger
log Info "main" $ "Starting transaq-connector-" <> log Info "main" $ "Starting transaq-connector-" <>
transaqConnectorVersionText <> transaqConnectorVersionText <>

Loading…
Cancel
Save