From 0f0aa21ea11f6eae368326b178d4c3eaf5cc5186 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 13 Sep 2016 17:52:07 -0400 Subject: add date to logger --- HTTP/Logger.hs | 21 +++++++++++++-------- HTTP/Server.hs | 3 +-- 2 files changed, 14 insertions(+), 10 deletions(-) (limited to 'HTTP') diff --git a/HTTP/Logger.hs b/HTTP/Logger.hs index 2758c37..0254017 100644 --- a/HTTP/Logger.hs +++ b/HTTP/Logger.hs @@ -3,17 +3,22 @@ - Licensed under the GNU AGPL version 3 or higher. -} +{-# LANGUAGE OverloadedStrings #-} + module HTTP.Logger where import System.Log.FastLogger -import Data.String +import Data.Monoid +import Prelude -data Logger = Logger LoggerSet LoggerSet +data Logger = Logger TimedFastLogger TimedFastLogger -newLogger :: IO Logger -newLogger = Logger - <$> newStdoutLoggerSet defaultBufSize - <*> newStderrLoggerSet defaultBufSize +withLogger :: (Logger -> IO a) -> IO a +withLogger a = do + t <- newTimeCache "%c" + withTimedFastLogger t (LogStdout defaultBufSize) $ \stdout -> + withTimedFastLogger t (LogStderr defaultBufSize) $ \stderr -> + a (Logger stdout stderr) logStdout :: Logger -> String -> IO () logStdout (Logger l _) = sendLogger l @@ -21,5 +26,5 @@ logStdout (Logger l _) = sendLogger l logStderr :: Logger -> String -> IO () logStderr (Logger _ l) = sendLogger l -sendLogger :: LoggerSet -> String -> IO () -sendLogger l s = pushLogStrLn l (fromString s) +sendLogger :: TimedFastLogger -> String -> IO () +sendLogger l s = l (\t -> "[" <> toLogStr t <> "] " <> toLogStr s <> "\n") diff --git a/HTTP/Server.hs b/HTTP/Server.hs index e2165eb..c36a6cc 100644 --- a/HTTP/Server.hs +++ b/HTTP/Server.hs @@ -35,8 +35,7 @@ data ServerState = ServerState } newServerState :: Maybe LocalStorageDirectory -> ServerConfig -> IO ServerState -newServerState d cfg = do - l <- newLogger +newServerState d cfg = withLogger $ \l -> ServerState <$> newEmptyTMVarIO <*> pure d -- cgit v1.2.3