instana-haskell-trace-sdk-0.2.0.0: test/integration/Instana/SDK/IntegrationTest/Logging.hs
module Instana.SDK.IntegrationTest.Logging
( testLogger
, initLogging
) where
import System.Environment (lookupEnv)
import System.IO (Handle, stdout)
import System.Log.Formatter
import System.Log.Handler (setFormatter)
import System.Log.Handler.Simple (GenericHandler, fileHandler,
streamHandler)
import System.Log.Logger (Priority (..), rootLoggerName,
setHandlers, setLevel,
updateGlobalLogger)
testLogger :: String
testLogger = "IntegrationTest"
initLogging :: IO ()
initLogging = do
logLevelEnvVar <- lookupEnv "LOG_LEVEL"
let
logLevel =
case logLevelEnvVar of
Just "DEBUG" -> DEBUG
_ -> INFO
updateGlobalLogger testLogger $ setLevel logLevel
updateGlobalLogger rootLoggerName $ setLevel logLevel
testFileHandler <- fileHandler "integration-test.log" logLevel
testStreamHandler <- streamHandler stdout logLevel
let
formattedAgentStubFileHandler = withFormatter testFileHandler
formattedAgentStubStreamHandler = withFormatter testStreamHandler
updateGlobalLogger testLogger $
setHandlers [ formattedAgentStubFileHandler ]
updateGlobalLogger rootLoggerName $
setHandlers [ formattedAgentStubStreamHandler ]
withFormatter :: GenericHandler Handle -> GenericHandler Handle
withFormatter handler = setFormatter handler formatter
where
timeFormat = "%F %H:%M:%S.%4q %z"
formatter = tfLogFormatter timeFormat "$time $msg"