@@ -17,6 +17,8 @@ module Control.Logger
1717 , tryJustWarn
1818 , logExceptions
1919 , LogSeverity(..)
20+ , renderLogLevel
21+ , parseLogLevel
2022 , oneoffLog
2123 , LoggingMonad
2224 , LogSource
@@ -210,3 +212,19 @@ compactCallStack =
210212 . map (\(f, l) -> f <> " (" <> compactLoc l <> ")")
211213 . getCallStack
212214 where compactLoc loc = srcLocFile loc <> ":" <> show (srcLocStartLine loc)
215+
216+parseLogLevel :: Text -> Either String LogSeverity
217+parseLogLevel t = case Text.strip t of
218+ "debug" -> pure Debug
219+ "info" -> pure Info
220+ "warn" -> pure Warn
221+ "error" -> pure Error
222+ _ -> Left
223+ "Unreadable log level. Possible values: debug, info, warn and error"
224+
225+renderLogLevel :: LogSeverity -> Text
226+renderLogLevel = \case
227+ Debug -> "debug"
228+ Info -> "info"
229+ Warn -> "warn"
230+ Error -> "error"