@@ -10,7 +10,6 @@ module Booster.Util (
1010 Flag (.. ),
1111 Bound (.. ),
1212 constructorName ,
13- handleOutput ,
1413 withFastLogger ,
1514 newTimeCache ,
1615 pattern PrettyTimestamps ,
@@ -20,32 +19,27 @@ module Booster.Util (
2019import Control.AutoUpdate (defaultUpdateSettings , mkAutoUpdate , updateAction , updateFreq )
2120import Control.DeepSeq (NFData (.. ))
2221import Control.Exception (bracket , catch , throwIO )
23- import Control.Monad.Logger.CallStack qualified as Log
2422import Data.ByteString (ByteString )
2523import Data.ByteString.Char8 qualified as BS
26- import Data.Char (toLower )
2724import Data.Coerce (coerce )
2825import Data.Data
2926import Data.Either (fromRight )
3027import Data.Hashable (Hashable )
3128import Data.Map qualified as Map
3229import Data.Maybe (fromMaybe )
33- import Data.Text qualified as Text
3430import Data.Time.Clock.System (SystemTime (.. ), getSystemTime , systemToUTCTime )
3531import Data.Time.Format
3632import GHC.Generics (Generic )
3733import Language.Haskell.TH.Syntax (Lift )
3834import System.Directory (removeFile )
3935import System.IO.Error (isDoesNotExistError )
4036import System.Log.FastLogger (
41- FastLogger ,
4237 LogStr ,
4338 LogType ,
4439 LogType' (.. ),
4540 defaultBufSize ,
4641 newFastLogger ,
4742 newTimedFastLogger ,
48- toLogStr ,
4943 )
5044import System.Log.FastLogger.Types (FormattedTime )
5145
@@ -133,34 +127,25 @@ encodeLabel = BS.concatMap encodeChar
133127 encodeChar c = fromMaybe (BS. singleton c) $ Map. lookup c encodeMap
134128
135129-------------------------------------------------------------------
136- -- logging helpers, some are adapted from monad-logger-aeson
137- handleOutput ::
138- FastLogger ->
139- Log. Loc ->
140- Log. LogSource ->
141- Log. LogLevel ->
142- Log. LogStr ->
143- IO ()
144- handleOutput stderrLogger _loc src level msg =
145- stderrLogger $ prettySrc <> prettyLevel <> " " <> msg <> " \n "
146- where
147- prettySrc = if Text. null src then mempty else " [" <> toLogStr src <> " ]"
148- prettyLevel = case level of
149- Log. LevelOther t -> " [" <> toLogStr t <> " ]"
150- Log. LevelInfo -> mempty
151- _ -> " [" <> (toLogStr $ BS. pack $ map toLower $ drop 5 $ show level) <> " ]"
152-
153- newFastLoggerMaybeWithTime :: Maybe (IO FormattedTime ) -> LogType -> IO (LogStr -> IO () , IO () )
154- newFastLoggerMaybeWithTime = \ case
155- Nothing -> newFastLogger
156- Just formattedTime -> \ typ -> do
130+ -- logging helpers
131+
132+ newFastLoggerMaybeWithTime ::
133+ Maybe (IO FormattedTime ) -> LogType -> IO ((Maybe FormattedTime -> LogStr ) -> IO () , IO () )
134+ newFastLoggerMaybeWithTime mTimer typ = case mTimer of
135+ Nothing -> do
136+ (logger, cleanup) <- newFastLogger typ
137+ pure (\ mkMsg -> logger $ mkMsg Nothing , cleanup)
138+ Just formattedTime -> do
157139 (logger, cleanup) <- newTimedFastLogger formattedTime typ
158- pure (\ msg -> logger ( \ time -> toLogStr time <> " " <> msg) , cleanup)
140+ pure (\ mkMsg -> logger $ mkMsg . Just , cleanup)
159141
160142withFastLogger ::
161143 Maybe (IO FormattedTime ) ->
162144 Maybe FilePath ->
163- (FastLogger -> Maybe FastLogger -> IO a ) ->
145+ ( ((Maybe FormattedTime -> LogStr ) -> IO () ) ->
146+ Maybe ((Maybe FormattedTime -> LogStr ) -> IO () ) ->
147+ IO a
148+ ) ->
164149 IO a
165150withFastLogger mFormattedTime Nothing log' =
166151 let typStderr = LogStderr defaultBufSize
@@ -170,7 +155,7 @@ withFastLogger mFormattedTime (Just fp) log' =
170155 typFile = LogFileNoRotate fp defaultBufSize
171156 in bracket (newFastLoggerMaybeWithTime mFormattedTime typStderr) snd $ \ (loggerStderr, _) -> do
172157 removeFileIfExists fp
173- bracket (newFastLogger typFile) snd $ \ (loggerFile, _) ->
158+ bracket (newFastLoggerMaybeWithTime mFormattedTime typFile) snd $ \ (loggerFile, _) ->
174159 log' loggerStderr (Just loggerFile)
175160 where
176161 removeFileIfExists :: FilePath -> IO ()
@@ -200,7 +185,7 @@ pattern NoPrettyTimestamps = Flag False
200185-- | Format time either as a human-readable date and time or as nanoseconds
201186formatSystemTime :: Flag " PrettyTimestamp" -> SystemTime -> ByteString
202187formatSystemTime prettyTimestamp =
203- let formatString = BS. unpack " %Y-%m-%dT%H:%M:%S. %6Q"
188+ let formatString = " %Y-%m-%dT%H:%M:%S%6Q"
204189 formatter =
205190 if coerce prettyTimestamp
206191 then formatTime defaultTimeLocale formatString . systemToUTCTime
0 commit comments