monad-logger 0.3.2.0 → 0.3.3.0
raw patch · 2 files changed
+37/−9 lines, 2 filesdep ~fast-logger
Dependency ranges changed: fast-logger
Files
- Control/Monad/Logger.hs +35/−7
- monad-logger.cabal +2/−2
Control/Monad/Logger.hs view
@@ -59,7 +59,16 @@ ) where import Language.Haskell.TH.Syntax (Lift (lift), Q, Exp, Loc (..), qLocation)+#if MIN_VERSION_fast_logger(0, 2, 0)+import System.Log.FastLogger (LogStr, pushLogStr, ToLogStr (toLogStr), LoggerSet, newLoggerSet, defaultBufSize)+import System.IO.Unsafe (unsafePerformIO)+#define Handle LoggerSet+import Data.Monoid (mempty, mappend)+import qualified GHC.IO.FD as FD+#else import System.Log.FastLogger (ToLogStr (toLogStr), LogStr (..))+import System.IO (stdout, stderr, Handle)+#endif import Data.Monoid (Monoid) @@ -71,13 +80,8 @@ import Control.Monad.Base (MonadBase (liftBase)) import Control.Monad.Loops (untilM) import Control.Monad.Trans.Control (MonadBaseControl (..), MonadTransControl (..))-import Data.Functor.Identity (Identity)-import Control.Monad.ST (ST)-import qualified Control.Monad.ST.Lazy as Lazy (ST) import qualified Control.Monad.Trans.Class as Trans -import System.IO (stdout, stderr, Handle)- import Control.Monad.IO.Class (MonadIO (liftIO)) import Control.Monad.Trans.Resource (MonadResource (liftResourceT), MonadThrow (monadThrow)) @@ -97,10 +101,9 @@ import qualified Control.Monad.Trans.State.Strict as Strict ( StateT ) import qualified Control.Monad.Trans.Writer.Strict as Strict ( WriterT ) -import Data.Text (Text, pack, unpack, empty)+import Data.Text (Text, pack, unpack) import qualified Data.Text as T import qualified Data.ByteString.Char8 as S8-import Data.Text.Encoding (encodeUtf8) import Control.Monad.Cont.Class ( MonadCont (..) ) import Control.Monad.Error.Class ( MonadError (..) )@@ -315,6 +318,22 @@ -> LogStr -> IO () defaultOutput h loc src level msg =+#if MIN_VERSION_fast_logger(0, 2, 0)+ pushLogStr h $+ "[" `mappend`+ (case level of+ LevelOther t -> toLogStr t+ _ -> toLogStr $ S8.pack $ drop 5 $ show level) `mappend`+ (if T.null src+ then mempty+ else "#" `mappend` toLogStr src) `mappend`+ "] " `mappend`+ msg `mappend`+ " @(" `mappend`+ toLogStr (S8.pack fileLocStr) `mappend`+ ")\n"+ where+#else S8.hPutStrLn h $ S8.concat bs where bs =@@ -333,6 +352,7 @@ , encodeUtf8 $ pack fileLocStr , S8.pack ")\n" ]+#endif -- taken from file-location package -- turn the TH Loc loaction information into a human readable string@@ -342,6 +362,14 @@ where line = show . fst . loc_start char = show . snd . loc_start++#if MIN_VERSION_fast_logger(0, 2, 0)+stdout, stderr :: LoggerSet+stdout = unsafePerformIO $ newLoggerSet defaultBufSize FD.stdout+{-# NOINLINE stdout #-}+stderr = unsafePerformIO $ newLoggerSet defaultBufSize FD.stderr+{-# NOINLINE stderr #-}+#endif -- | Run a block using a @MonadLogger@ instance which prints to stderr. --
monad-logger.cabal view
@@ -1,5 +1,5 @@ name: monad-logger-version: 0.3.2.0+version: 0.3.3.0 synopsis: A class of monads which can log messages. description: This package uses template-haskell for determining source code locations of messages. homepage: https://github.com/kazu-yamamoto/logger@@ -23,7 +23,7 @@ , lifted-base , resourcet >= 0.4 && < 0.5 , conduit >= 1.0 && < 1.1- , fast-logger >= 0.2 && < 0.4+ , fast-logger >= 0.2 && < 2.1 , transformers-base , monad-control , monad-loops