module Log ( LogState , writeLog , stdOutLog , fileLog , noLog ) where import Control.Concurrent.MVar --import Data.Time.Clock import Data.Time.Format() data LogState = NoLog | FileLog (MVar FilePath) | StdOutLog ---------------------------------- noLog = NoLog stdOutLog = StdOutLog fileLog f = do writeFile f "" fmap FileLog $ newMVar f writeLog :: LogState -> [String] -> IO () writeLog _ [] = return () writeLog NoLog _ = return () writeLog (FileLog m) s = modifyMVar_ m $ \fn -> do -- time <- getCurrentTime appendFile fn $ unlines s -- appendFile fn $ unlines $ ("----- " ++ show time ++ " -----"): s return fn writeLog StdOutLog s = do -- time <- getCurrentTime putStrLn $ unlines s -- appendFile fn $ unlines $ ("----- " ++ show time ++ " -----"): s