{-# LANGUAGE CPP #-} module Affection.Logging where import Debug.Trace data LogLevel = Verbose | Debug | Warn | Error log :: LogLevel -> String -> a -> a #if defined(VERBOSE) log Verbose s = trace ("VERBOSE: " ++ s) #endif #if defined(DEBUG) || defined(VERBOSE) log Debug s = trace ("DEBUG: " ++ s) #endif #if defined(WARN) || defined(DEBUG) || defined(VERBOSE) log Warn s = trace ("WARN: " ++ s) #endif #if defined(ERROR) || defined(WARN) || defined(DEBUG) || defined(VERBOSE) log Error s = trace ("ERROR: " ++ s) #endif log _ _ = id logIO :: LogLevel -> String -> IO () #if defined(VERBOSE) logIO Verbose s = traceIO ("VERBOSE: " ++ s) #endif #if defined(DEBUG) || defined(VERBOSE) logIO Debug s = traceIO ("DEBUG: " ++ s) #endif #if defined(WARN) || defined(DEBUG) || defined(VERBOSE) logIO Warn s = traceIO ("WARN: " ++ s) #endif #if defined(ERROR) || defined(WARN) || defined(DEBUG) || defined(VERBOSE) logIO Error s = traceIO ("ERROR: " ++ s) #endif logIO _ _ = return ()