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