-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathLog.hs
52 lines (45 loc) · 1.44 KB
/
Log.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
module Platform.Log
( logDebug
, logError
, logInfo
, logWarn
) where
import Control.Monad (when)
import Control.Monad.IO.Class
import Control.Monad.Reader
import qualified Data.ByteString.Char8 as BS
import Data.Text (Text)
import qualified Data.Text as T
import Data.Time
import Platform.Common.AppM
import Platform.Common.Types
import System.Log.FastLogger
logDebug :: (MonadIO m) => Text -> AppM m ()
logDebug msg = do
res <- asks appConfig
liftIO $ logger (loggerSet res) (minLogLevel res) LevelDebug msg
logError :: (MonadIO m) => Text -> AppM m ()
logError msg = do
res <- asks appConfig
liftIO $ logger (loggerSet res) (minLogLevel res) LevelError msg
logInfo :: (MonadIO m) => Text -> AppM m ()
logInfo msg = do
res <- asks appConfig
liftIO $ logger (loggerSet res) (minLogLevel res) LevelInfo msg
logWarn :: (MonadIO m) => Text -> AppM m ()
logWarn msg = do
res <- asks appConfig
liftIO $ logger (loggerSet res) (minLogLevel res) LevelWarn msg
logger :: ToLogStr msg => LoggerSet -> MinLogLevel -> LogLevel -> msg -> IO ()
logger loggerSet_ minLogLevel_ logLevel0 msg = do
when (logLevel0 >= minLogLevel_) $ do
currTime <- getCurrentTime
let logMsg =
[ show logLevel0
, show currTime
, ": "
, BS.unpack $ (fromLogStr . toLogStr) msg
]
pushLogStrLn loggerSet_ $ toLogStr $ (T.pack . unwords) logMsg