barrie-0.4: src/Barrie/Trace.hs
-- Module for enabling trace
module Barrie.Trace (enableTrace, traceMessage) where
import Data.IORef
import System.IO.Unsafe
traceFile :: IORef (Maybe String)
traceFile = unsafePerformIO $ newIORef Nothing
enableTrace :: String -> IO ()
enableTrace fileName = do
writeIORef traceFile (Just fileName)
traceMessage :: String -> IO ()
traceMessage msg = do
fileName <- readIORef traceFile
case fileName of
Nothing -> return ()
Just name -> appendFile name (msg ++ "\n")