packages feed

sshtun-1.0.0: src/Sshtun/Log.hs

-- Copyright: 2012 Dino Morelli
-- License: BSD3 (see LICENSE)
-- Author: Dino Morelli <dino@ui3.info>

module Sshtun.Log
   ( initLogging, logM, logTest
   , Priority (..)  -- Re-exported from System.Log
   )
   where

import System.Log.Formatter
import System.Log.Handler ( setFormatter )
import System.Log.Handler.Simple ( fileHandler )
import qualified System.Log.Logger as L ( logM )
import           System.Log.Logger hiding ( logM )


{- Convenience wrapper for logging
-}
logM :: Priority -> String -> IO ()
logM = L.logM rootLoggerName


{- Set up logging
-}
initLogging :: FilePath -> Priority -> IO ()
initLogging logFile logPriority = do
   h <- fileHandler logFile logPriority >>= \lh -> return $
      setFormatter lh (simpleLogFormatter "[$time : $prio] $msg")
   updateGlobalLogger rootLoggerName $ setHandlers [h]
   updateGlobalLogger rootLoggerName $ setLevel logPriority


{- Test function to generate every kind of log message
-}
logTest :: IO ()
logTest = do
   logM DEBUG     "log test message 1 of 8"
   logM INFO      "log test message 2 of 8"
   logM NOTICE    "log test message 3 of 8"
   logM WARNING   "log test message 4 of 8"
   logM ERROR     "log test message 5 of 8"
   logM CRITICAL  "log test message 6 of 8"
   logM ALERT     "log test message 7 of 8"
   logM EMERGENCY "log test message 8 of 8"