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" ((Logger -> Logger) -> IO ()) -> (Logger -> Logger) -> IO () 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) = String -> String forall a. IsString a => String -> a fromString String host String -> String -> String forall a. Semigroup a => a -> a -> a <> String ":" String -> String -> String forall a. Semigroup a => a -> a -> a <> PortNumber -> String 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" (String -> IO ()) -> String -> IO () forall a b. (a -> b) -> a -> b $ String "ERROR :: " String -> String -> String 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" (String -> IO ()) -> String -> IO () forall a b. (a -> b) -> a -> b $ String "DEBUG :: " String -> String -> String forall a. Semigroup a => a -> a -> a <> String msg