Skip to content

Commit 4c137eb

Browse files
committed
Rename withLogger to withLoggerLegacy, withLogger1 to withLogger
1 parent d446c34 commit 4c137eb

File tree

5 files changed

+86
-88
lines changed

5 files changed

+86
-88
lines changed

booster/tools/booster/Server.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ import Kore.Log (
7676
TimestampsSwitch (TimestampsDisable),
7777
defaultKoreLogOptions,
7878
swappableLogger,
79-
withLogger1,
79+
withLogger,
8080
)
8181
import Kore.Log qualified as Log
8282
import Kore.Log.DebugSolver qualified as Log
@@ -152,7 +152,7 @@ main = do
152152
pure (const False)
153153
Just es -> pure (`elem` es)
154154

155-
liftIO $ void $ withBugReport (ExeName "kore-rpc-booster") BugReportOnError $ \reportDirectory -> withMDLib llvmLibraryFile $ \mdl -> do
155+
liftIO $ void $ withBugReport (ExeName "kore-rpc-booster") BugReportOnError $ \_reportDirectory -> withMDLib llvmLibraryFile $ \mdl -> do
156156
let coLogLevel = fromMaybe Log.Info $ toSeverity logLevel
157157
koreLogOptions =
158158
(defaultKoreLogOptions (ExeName "") startTime)
@@ -183,7 +183,7 @@ main = do
183183
}
184184
srvSettings = serverSettings port "*"
185185

186-
withLogger1 reportDirectory koreLogOptions $ \actualLogAction -> do
186+
withLogger koreLogOptions $ \actualLogAction -> do
187187
mLlvmLibrary <- maybe (pure Nothing) (fmap Just . mkAPI) mdl
188188
definitionsWithCeilSummaries <-
189189
liftIO $

dev-tools/kore-rpc-dev/Server.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ import Kore.Log (
6666
TimestampsSwitch (TimestampsDisable),
6767
defaultKoreLogOptions,
6868
swappableLogger,
69-
withLogger1,
69+
withLogger,
7070
)
7171
import Kore.Log qualified
7272
import Kore.Log qualified as Log
@@ -191,8 +191,8 @@ main = do
191191
}
192192
srvSettings = serverSettings port "*"
193193

194-
liftIO $ void $ withBugReport (ExeName "kore-rpc-dev") BugReportOnError $ \reportDirectory ->
195-
withLogger1 reportDirectory koreLogOptions $ \actualLogAction -> do
194+
liftIO $ void $ withBugReport (ExeName "kore-rpc-dev") BugReportOnError $ \_reportDirectory ->
195+
withLogger koreLogOptions $ \actualLogAction -> do
196196
mvarLogAction <- newMVar actualLogAction
197197
let logAction = swappableLogger mvarLogAction
198198
kore@KoreServer{runSMT} <-

kore/app/repl/Main.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import Kore.Log (
2626
logEntry,
2727
runLoggerT,
2828
swappableLogger,
29-
withLogger,
29+
withLoggerLegacy,
3030
)
3131
import Kore.Log.ErrorException (
3232
errorException,
@@ -230,7 +230,7 @@ mainWithOptions :: LocalOptions KoreReplOptions -> IO ()
230230
mainWithOptions LocalOptions{execOptions} = do
231231
exitCode <-
232232
withBugReport Main.exeName bugReportOption $ \tempDirectory ->
233-
withLogger tempDirectory koreLogOptions $ \actualLogAction -> do
233+
withLoggerLegacy tempDirectory koreLogOptions $ \actualLogAction -> do
234234
mvarLogAction <- newMVar actualLogAction
235235
let swapLogAction = swappableLogger mvarLogAction
236236
flip runLoggerT swapLogAction $

kore/src/Kore/Log.hs

Lines changed: 77 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ module Kore.Log (
88
koreLogFilters,
99
koreLogTransformer,
1010
withLogger,
11-
withLogger1,
11+
withLoggerLegacy,
1212
emptyLogger,
1313
stderrLogger,
1414
swappableLogger,
1515
makeKoreLogger,
16+
makeKoreLoggerLegacy,
1617
Colog.logTextStderr,
1718
Colog.logTextHandle,
1819
runKoreLog,
@@ -90,43 +91,41 @@ data WithTimestamp = WithTimestamp SomeEntry TimeSpec
9091
{- | Generates an appropriate logger for the given 'KoreLogOptions'. It uses
9192
the CPS style because some outputters require cleanup (e.g. files).
9293
-}
93-
withLogger ::
94+
withLoggerLegacy ::
9495
FilePath ->
9596
KoreLogOptions ->
9697
(LogAction IO SomeEntry -> IO a) ->
9798
IO a
98-
withLogger reportDirectory koreLogOptions = runContT $ do
99-
mainLogger <- ContT $ withMainLogger reportDirectory koreLogOptions
99+
withLoggerLegacy reportDirectory koreLogOptions = runContT $ do
100+
mainLogger <- ContT $ withMainLoggerLegacy reportDirectory koreLogOptions
100101
let KoreLogOptions{exeName, debugSolverOptions} = koreLogOptions
101102
smtSolverLogger <- ContT $ withSmtSolverLogger exeName debugSolverOptions
102103
traceLogger <- ContT $ withRewriteTraceLogger koreLogOptions
103104
let KoreLogOptions{logSQLiteOptions} = koreLogOptions
104105
logSQLite <- ContT $ withLogSQLite logSQLiteOptions
105106
return $ mainLogger <> smtSolverLogger <> traceLogger <> logSQLite
106107

107-
{- | Generates an appropriate logger for the given 'KoreLogOptions'. It uses
108-
the CPS style because some outputters require cleanup (e.g. files).
108+
{- | Like 'withLoggerLegacy', but modified for the needs for 'kore-rpc-booster':
109+
* optional JSON logging
110+
* no bug report
111+
* no SQL logging
109112
-}
110-
withLogger1 ::
111-
FilePath ->
113+
withLogger ::
112114
KoreLogOptions ->
113115
(LogAction IO SomeEntry -> IO a) ->
114116
IO a
115-
withLogger1 reportDirectory koreLogOptions = runContT $ do
116-
mainLogger <- ContT $ withMainLogger1 reportDirectory koreLogOptions
117+
withLogger koreLogOptions = runContT $ do
118+
mainLogger <- ContT $ withMainLogger koreLogOptions
117119
let KoreLogOptions{exeName, debugSolverOptions} = koreLogOptions
118120
smtSolverLogger <- ContT $ withSmtSolverLogger exeName debugSolverOptions
119-
traceLogger <- ContT $ withRewriteTraceLogger koreLogOptions
120-
let KoreLogOptions{logSQLiteOptions} = koreLogOptions
121-
logSQLite <- ContT $ withLogSQLite logSQLiteOptions
122-
return $ mainLogger <> smtSolverLogger <> traceLogger <> logSQLite
121+
return $ mainLogger <> smtSolverLogger
123122

124-
withMainLogger ::
123+
withMainLoggerLegacy ::
125124
FilePath ->
126125
KoreLogOptions ->
127126
(LogAction IO SomeEntry -> IO a) ->
128127
IO a
129-
withMainLogger reportDirectory koreLogOptions = runContT $ do
128+
withMainLoggerLegacy reportDirectory koreLogOptions = runContT $ do
130129
let KoreLogOptions{exeName, startTime} = koreLogOptions
131130
bugReportLogFile = reportDirectory </> getExeName exeName <.> "log"
132131
bugReportLogAction <- ContT $ Colog.withLogTextFile bugReportLogFile
@@ -140,17 +139,16 @@ withMainLogger reportDirectory koreLogOptions = runContT $ do
140139
KoreLogOptions{logFormat} = koreLogOptions
141140
logAction =
142141
userLogAction <> bugReportLogAction
143-
& makeKoreLogger exeName startTime timestampsSwitch logFormat
142+
& makeKoreLoggerLegacy exeName startTime timestampsSwitch logFormat
144143
& koreLogFilters koreLogOptions
145144
& koreLogTransformer koreLogOptions
146145
pure logAction
147146

148-
withMainLogger1 ::
149-
FilePath ->
147+
withMainLogger ::
150148
KoreLogOptions ->
151149
(LogAction IO SomeEntry -> IO a) ->
152150
IO a
153-
withMainLogger1 _reportDirectory koreLogOptions = runContT $ do
151+
withMainLogger koreLogOptions = runContT $ do
154152
let KoreLogOptions{exeName} = koreLogOptions
155153
(entryFilter, standardLogAction, jsonLogAction) <-
156154
case logType koreLogOptions of
@@ -161,10 +159,12 @@ withMainLogger1 _reportDirectory koreLogOptions = runContT $ do
161159
, jsonLogAction ldata
162160
)
163161
LogStdErr -> pure (const False, Colog.logTextStderr, Colog.logTextStderr)
164-
LogFileText _logFile -> pure (const False, Colog.logTextStderr, Colog.logTextStderr) -- Not sure what to put here
162+
LogFileText logFile -> do
163+
action <- lift (checkLogFilePath exeName "" logFile) >>= ContT . Colog.withLogTextFile
164+
pure (const False, action, action)
165165
let KoreLogOptions{logFormat} = koreLogOptions
166166
logAction =
167-
makeKoreLogger1
167+
makeKoreLogger
168168
exeName
169169
logFormat
170170
entryFilter
@@ -288,56 +288,51 @@ filterSeverity level entry =
288288
-- | Run a 'LoggerT' with the given options.
289289
runKoreLog :: FilePath -> KoreLogOptions -> LoggerT IO a -> IO a
290290
runKoreLog reportDirectory options loggerT =
291-
withLogger reportDirectory options $ runLoggerT loggerT
291+
withLoggerLegacy reportDirectory options $ runLoggerT loggerT
292292

293293
-- | Run a 'LoggerT' with the given options, using `swappableLogger` to make it thread safe.
294294
runKoreLogThreadSafe :: FilePath -> KoreLogOptions -> LoggerT IO a -> IO a
295295
runKoreLogThreadSafe reportDirectory options loggerT =
296-
withLogger reportDirectory options $ \actualLogAction -> do
296+
withLoggerLegacy reportDirectory options $ \actualLogAction -> do
297297
mvarLogAction <- newMVar actualLogAction
298298
let swapLogAction = swappableLogger mvarLogAction
299299
runLoggerT loggerT swapLogAction
300300

301-
{- | The logger that redirects some of the items to a file
302-
TODO: needs better description
301+
{- | The default Kore logger used by the legacy backend.
302+
303+
Creates a kore logger which:
304+
* adds timestamps
305+
* formats messages: "<exe-name>: [<timestamp>] <severity> (<entry-type>): <message>"
303306
-}
304-
makeKoreLogger1 ::
307+
makeKoreLoggerLegacy ::
305308
forall io.
306309
MonadIO io =>
307310
ExeName ->
311+
TimeSpec ->
312+
TimestampsSwitch ->
308313
KoreLogFormat ->
309-
(Text -> Bool) ->
310-
LogAction io Text ->
311314
LogAction io Text ->
312315
LogAction io SomeEntry
313-
makeKoreLogger1 exeName koreLogFormat entryFilter prettyLogAction jsonLogAction =
314-
let actionForJsonLogs =
315-
jsonLogAction
316-
& Colog.cmap renderJson
317-
& Colog.cfilter (entryFilter . entryTypeText)
318-
actionForPrettyLogs =
319-
prettyLogAction
320-
& Colog.cmap render
321-
& Colog.cfilter (not . entryFilter . entryTypeText)
322-
in actionForJsonLogs <> actionForPrettyLogs
316+
makeKoreLoggerLegacy exeName startTime timestampSwitch koreLogFormat logActionText =
317+
logActionText
318+
& contramap render
319+
& Colog.cmapM withTimestamp
323320
where
324-
renderJson :: SomeEntry -> Text
325-
renderJson (SomeEntry _context actualEntry) =
326-
LazyText.toStrict . JSON.encodeToLazyText . addOriginField $ oneLineJson actualEntry
327-
where
328-
addOriginField :: JSON.Value -> JSON.Value
329-
addOriginField = \case
330-
(JSON.Object xs) -> JSON.Object $ JSON.insert (JSON.fromText "origin") (JSON.toJSON KoreRpc) xs
331-
xs -> xs
332-
333-
render :: SomeEntry -> Text
334-
render entry =
335-
prettyActualEntry entry
321+
render :: WithTimestamp -> Text
322+
render (WithTimestamp entry entryTime) =
323+
prettyActualEntry timestamp entry
336324
& Pretty.layoutPretty Pretty.defaultLayoutOptions
337325
& Pretty.renderText
338-
326+
where
327+
timestamp =
328+
case timestampSwitch of
329+
TimestampsDisable -> Nothing
330+
TimestampsEnable ->
331+
Just . Pretty.brackets . Pretty.pretty $
332+
toMicroSecs (diffTimeSpec startTime entryTime)
333+
toMicroSecs = (`div` 1000) . toNanoSecs
339334
exeName' = Pretty.pretty exeName <> Pretty.colon
340-
prettyActualEntry entry@(SomeEntry entryContext actualEntry)
335+
prettyActualEntry timestamp entry@(SomeEntry entryContext actualEntry)
341336
| OneLine <- koreLogFormat =
342337
Pretty.hsep [header, oneLineDoc actualEntry]
343338
| otherwise =
@@ -350,6 +345,7 @@ makeKoreLogger1 exeName koreLogFormat entryFilter prettyLogAction jsonLogAction
350345
header =
351346
(Pretty.hsep . catMaybes)
352347
[ Just exeName'
348+
, timestamp
353349
, Just severity'
354350
, Just (Pretty.parens $ type' entry)
355351
]
@@ -378,41 +374,44 @@ makeKoreLogger1 exeName koreLogFormat entryFilter prettyLogAction jsonLogAction
378374

379375
indent = Pretty.indent 4
380376

381-
{- | The default Kore logger.
382-
383-
Creates a kore logger which:
384-
* adds timestamps
385-
* formats messages: "<exe-name>: [<timestamp>] <severity> (<entry-type>): <message>"
386-
-}
377+
-- | The logger used by 'kore-rpc-booster' and 'kore-rpc-dev'
387378
makeKoreLogger ::
388379
forall io.
389380
MonadIO io =>
390381
ExeName ->
391-
TimeSpec ->
392-
TimestampsSwitch ->
393382
KoreLogFormat ->
383+
(Text -> Bool) ->
384+
LogAction io Text ->
394385
LogAction io Text ->
395386
LogAction io SomeEntry
396-
makeKoreLogger exeName startTime timestampSwitch koreLogFormat logActionText =
397-
logActionText
398-
& contramap render
399-
& Colog.cmapM withTimestamp
387+
makeKoreLogger exeName koreLogFormat entryFilter prettyLogAction jsonLogAction =
388+
let actionForJsonLogs =
389+
jsonLogAction
390+
& Colog.cmap renderJson
391+
& Colog.cfilter (entryFilter . entryTypeText)
392+
actionForPrettyLogs =
393+
prettyLogAction
394+
& Colog.cmap render
395+
& Colog.cfilter (not . entryFilter . entryTypeText)
396+
in actionForJsonLogs <> actionForPrettyLogs
400397
where
401-
render :: WithTimestamp -> Text
402-
render (WithTimestamp entry entryTime) =
403-
prettyActualEntry timestamp entry
398+
renderJson :: SomeEntry -> Text
399+
renderJson (SomeEntry _context actualEntry) =
400+
LazyText.toStrict . JSON.encodeToLazyText . addOriginField $ oneLineJson actualEntry
401+
where
402+
addOriginField :: JSON.Value -> JSON.Value
403+
addOriginField = \case
404+
(JSON.Object xs) -> JSON.Object $ JSON.insert (JSON.fromText "origin") (JSON.toJSON KoreRpc) xs
405+
xs -> xs
406+
407+
render :: SomeEntry -> Text
408+
render entry =
409+
prettyActualEntry entry
404410
& Pretty.layoutPretty Pretty.defaultLayoutOptions
405411
& Pretty.renderText
406-
where
407-
timestamp =
408-
case timestampSwitch of
409-
TimestampsDisable -> Nothing
410-
TimestampsEnable ->
411-
Just . Pretty.brackets . Pretty.pretty $
412-
toMicroSecs (diffTimeSpec startTime entryTime)
413-
toMicroSecs = (`div` 1000) . toNanoSecs
412+
414413
exeName' = Pretty.pretty exeName <> Pretty.colon
415-
prettyActualEntry timestamp entry@(SomeEntry entryContext actualEntry)
414+
prettyActualEntry entry@(SomeEntry entryContext actualEntry)
416415
| OneLine <- koreLogFormat =
417416
Pretty.hsep [header, oneLineDoc actualEntry]
418417
| otherwise =
@@ -425,7 +424,6 @@ makeKoreLogger exeName startTime timestampSwitch koreLogFormat logActionText =
425424
header =
426425
(Pretty.hsep . catMaybes)
427426
[ Just exeName'
428-
, timestamp
429427
, Just severity'
430428
, Just (Pretty.parens $ type' entry)
431429
]
@@ -471,7 +469,7 @@ stderrLogger ::
471469
KoreLogFormat ->
472470
LogAction io SomeEntry
473471
stderrLogger exeName startTime timestampsSwitch logFormat =
474-
makeKoreLogger exeName startTime timestampsSwitch logFormat Colog.logTextStderr
472+
makeKoreLoggerLegacy exeName startTime timestampsSwitch logFormat Colog.logTextStderr
475473

476474
{- | @swappableLogger@ delegates to the logger contained in the 'MVar'.
477475

kore/src/Kore/Repl/State.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ liftSimplifierWithLogger mLogger simplifier = do
526526
(textLogger, maybeHandle) <- logTypeToLogger logType
527527
let logger =
528528
Log.koreLogFilters koreLogOptions $
529-
Log.makeKoreLogger
529+
Log.makeKoreLoggerLegacy
530530
exeName
531531
startTime
532532
timestampsSwitch

0 commit comments

Comments
 (0)