module Logger where import ClassyPrelude import Network.Socket (HostName, PortNumber) import qualified System.Log.Logger as LOG data Verbosity = QUIET | VERBOSE | NORMAL init :: Verbosity -> IO () init :: Verbosity -> IO () init Verbosity lvl = String -> (Logger -> Logger) -> IO () LOG.updateGlobalLogger String "wstunnel" forall a b. (a -> b) -> a -> b $ case Verbosity lvl of Verbosity QUIET -> Priority -> Logger -> Logger LOG.setLevel Priority LOG.ERROR Verbosity VERBOSE -> Priority -> Logger -> Logger LOG.setLevel Priority LOG.DEBUG Verbosity NORMAL -> Priority -> Logger -> Logger LOG.setLevel Priority LOG.INFO toStr :: (HostName, PortNumber) -> String toStr :: (String, PortNumber) -> String toStr (String host, PortNumber port) = forall a. IsString a => String -> a fromString String host forall a. Semigroup a => a -> a -> a <> String ":" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show PortNumber port err :: String -> IO() err :: String -> IO () err String msg = String -> String -> IO () LOG.errorM String "wstunnel" forall a b. (a -> b) -> a -> b $ String "ERROR :: " forall a. Semigroup a => a -> a -> a <> String msg info :: String -> IO() info :: String -> IO () info = String -> String -> IO () LOG.infoM String "wstunnel" debug :: String -> IO() debug :: String -> IO () debug String msg = String -> String -> IO () LOG.debugM String "wstunnel" forall a b. (a -> b) -> a -> b $ String "DEBUG :: " forall a. Semigroup a => a -> a -> a <> String msg