From 324202bdb7ecf06b3cf79f50d140c32b2db18711 Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Sat, 8 Apr 2023 12:12:15 +0700 Subject: [PATCH] Configurable loglevel --- src/Config.hs | 7 +++++-- src/Main.hs | 20 ++++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/Config.hs b/src/Config.hs index 52633e7..0a3438d 100644 --- a/src/Config.hs +++ b/src/Config.hs @@ -7,8 +7,10 @@ module Config loadConfig, ) where -import qualified Data.Text as T -import Dhall (FromDhall (autoWith), auto, expected, inputFile) +import ATrade.Logging (Severity) +import qualified Data.Text as T +import Dhall (FromDhall (autoWith), auto, expected, + inputFile) import GHC.Generics data SubscriptionConfig = SubscriptionConfig T.Text T.Text @@ -17,6 +19,7 @@ data SubscriptionConfig = SubscriptionConfig T.Text T.Text instance FromDhall SubscriptionConfig data TransaqConnectorConfig = TransaqConnectorConfig { + logLevel :: Int, quotesourceEndpoint :: T.Text, brokerEndpoint :: T.Text, brokerNotificationsEndpoint :: T.Text, diff --git a/src/Main.hs b/src/Main.hs index c60d640..a2677b3 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -6,14 +6,14 @@ import ATrade (libatrade_gitrev, import ATrade.Broker.Protocol (NotificationSqnum (NotificationSqnum)) import ATrade.Broker.Server (startBrokerServer, stopBrokerServer) -import ATrade.Logging (Message (..), Severity (Info), +import ATrade.Logging (Message (..), Severity (Debug, Error, Info, Warning), logWith) import ATrade.Logging (fmtMessage) import ATrade.QuoteSource.Server (startQuoteSourceServer, stopQuoteSourceServer) import ATrade.Types (defaultServerSecurityParams) -import Colog (LogAction, logTextStdout, - (>$<)) +import Colog (LogAction, cfilter, + logTextStdout, (>$<)) import Colog.Actions (logTextHandle) import Config (TransaqConnectorConfig (..), loadConfig) @@ -34,15 +34,23 @@ import TickerInfoServer (withTickerInfoServer) import qualified TXMLConnector as Connector import Version (transaqConnectorVersionText) -mkLogger :: (MonadIO m) => Handle -> LogAction m Message -mkLogger h = fmtMessage >$< (logTextStdout <> logTextHandle h) +mkLogger :: (MonadIO m) => Handle -> Severity -> LogAction m Message +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 = do initEventCounters cfg <- loadConfig "transaq-connector.dhall" + let loglevel = parseLoglevel (logLevel cfg) withFile "transaq-connector.log" AppendMode $ \logH -> do - let logger = mkLogger logH + let logger = mkLogger logH loglevel let log = logWith logger log Info "main" $ "Starting transaq-connector-" <> transaqConnectorVersionText <>