Skip to content

Instantly share code, notes, and snippets.

@jokester
Created September 22, 2015 15:22
Show Gist options
  • Save jokester/1145071d28394cbcb30b to your computer and use it in GitHub Desktop.
Save jokester/1145071d28394cbcb30b to your computer and use it in GitHub Desktop.
Witness me!
import System.Environment (setEnv, lookupEnv)
doWriteLog :: Int -> Int -> String -> IO ()
doWriteLog logLevel messageLevel message
| messageLevel >= logLevel = putStrLn message
doWriteLog _ _ _ = return ()
setLogLevel :: Int -> IO ()
setLogLevel newLogLevel = do
setEnv "__loglevel" $ show newLogLevel
getLogLevel :: IO Int
getLogLevel = do
maybeLevel <- lookupEnv "__loglevel"
case maybeLevel of
Nothing -> return 3
Just someStr -> return (read someStr :: Int)
mylog :: Int -> String -> IO ()
mylog messageLevel message = do
logLevel <- getLogLevel
doWriteLog logLevel messageLevel message
main = do
mylog 2 "will not be printed"
mylog 3 "witness me!"
setLogLevel 2
mylog 2 "bloodbag!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment