module Lambdabot.Logging ( L.Priority(..) , MonadLogging(..) , debugM , infoM , noticeM , warningM , errorM , criticalM , alertM , emergencyM ) where import Control.Monad import Data.List import qualified System.Log.Logger as L class Monad m => MonadLogging m where getCurrentLogger :: m [String] logM :: String -> L.Priority -> String -> m () instance MonadLogging IO where getCurrentLogger :: IO [String] getCurrentLogger = forall (m :: * -> *) a. Monad m => a -> m a return [] logM :: String -> Priority -> String -> IO () logM = String -> Priority -> String -> IO () L.logM getCurrentLoggerName :: MonadLogging m => m String getCurrentLoggerName :: forall (m :: * -> *). MonadLogging m => m String getCurrentLoggerName = forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r liftM (forall a. [a] -> [[a]] -> [a] intercalate String "." forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. (a -> Bool) -> [a] -> [a] filter (Bool -> Bool not forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a. Foldable t => t a -> Bool null)) forall (m :: * -> *). MonadLogging m => m [String] getCurrentLogger debugM :: MonadLogging m => String -> m () debugM :: forall (m :: * -> *). MonadLogging m => String -> m () debugM String msg = do String logger <- forall (m :: * -> *). MonadLogging m => m String getCurrentLoggerName forall (m :: * -> *). MonadLogging m => String -> Priority -> String -> m () logM String logger Priority L.DEBUG String msg infoM :: MonadLogging m => String -> m () infoM :: forall (m :: * -> *). MonadLogging m => String -> m () infoM String msg = do String logger <- forall (m :: * -> *). MonadLogging m => m String getCurrentLoggerName forall (m :: * -> *). MonadLogging m => String -> Priority -> String -> m () logM String logger Priority L.INFO String msg noticeM :: MonadLogging m => String -> m () noticeM :: forall (m :: * -> *). MonadLogging m => String -> m () noticeM String msg = do String logger <- forall (m :: * -> *). MonadLogging m => m String getCurrentLoggerName forall (m :: * -> *). MonadLogging m => String -> Priority -> String -> m () logM String logger Priority L.NOTICE String msg warningM :: MonadLogging m => String -> m () warningM :: forall (m :: * -> *). MonadLogging m => String -> m () warningM String msg = do String logger <- forall (m :: * -> *). MonadLogging m => m String getCurrentLoggerName forall (m :: * -> *). MonadLogging m => String -> Priority -> String -> m () logM String logger Priority L.WARNING String msg errorM :: MonadLogging m => String -> m () errorM :: forall (m :: * -> *). MonadLogging m => String -> m () errorM String msg = do String logger <- forall (m :: * -> *). MonadLogging m => m String getCurrentLoggerName forall (m :: * -> *). MonadLogging m => String -> Priority -> String -> m () logM String logger Priority L.ERROR String msg criticalM :: MonadLogging m => String -> m () criticalM :: forall (m :: * -> *). MonadLogging m => String -> m () criticalM String msg = do String logger <- forall (m :: * -> *). MonadLogging m => m String getCurrentLoggerName forall (m :: * -> *). MonadLogging m => String -> Priority -> String -> m () logM String logger Priority L.CRITICAL String msg alertM :: MonadLogging m => String -> m () alertM :: forall (m :: * -> *). MonadLogging m => String -> m () alertM String msg = do String logger <- forall (m :: * -> *). MonadLogging m => m String getCurrentLoggerName forall (m :: * -> *). MonadLogging m => String -> Priority -> String -> m () logM String logger Priority L.ALERT String msg emergencyM :: MonadLogging m => String -> m () emergencyM :: forall (m :: * -> *). MonadLogging m => String -> m () emergencyM String msg = do String logger <- forall (m :: * -> *). MonadLogging m => m String getCurrentLoggerName forall (m :: * -> *). MonadLogging m => String -> Priority -> String -> m () logM String logger Priority L.EMERGENCY String msg