raven-haskell 0.1.2.1 → 0.1.3.0
raw patch · 5 files changed
+30/−23 lines, 5 filesdep ~time
Dependency ranges changed: time
Files
- raven-haskell.cabal +2/−1
- src/System/Log/Raven.hs +2/−3
- src/System/Log/Raven/Transport/Debug.hs +1/−1
- src/System/Log/Raven/Types.hs +3/−2
- test/Test.hs +22/−16
raven-haskell.cabal view
@@ -1,5 +1,5 @@ name: raven-haskell-version: 0.1.2.1+version: 0.1.3.0 synopsis: Haskell client for Sentry logging service. -- description: homepage: https://bitbucket.org/dpwiz/raven-haskell@@ -49,6 +49,7 @@ bytestring, hspec, raven-haskell,+ time, unordered-containers source-repository head
src/System/Log/Raven.hs view
@@ -60,7 +60,6 @@ import Data.UUID (UUID) import System.Random (randomIO) import Data.Time.Clock (getCurrentTime)-import Data.Time.Format (formatTime, defaultTimeLocale) import System.IO (stderr, hPutStrLn) import qualified Control.Exception as E import qualified Data.HashMap.Strict as HM@@ -105,7 +104,7 @@ stderrFallback :: SentryRecord -> IO () stderrFallback rec = hPutStrLn stderr $ concat- [ srTimestamp rec, " "+ [ show $ srTimestamp rec, " " , show $ srLevel rec, " " , srLogger rec, ": " , srMessage rec@@ -127,7 +126,7 @@ -> IO SentryRecord record logger lvl msg upd = do eid <- (filter (/= '-') . show) `fmap` (randomIO :: IO UUID)- ts <- formatTime defaultTimeLocale "%Y-%m-%dT%H:%M:%S%Q" `fmap` getCurrentTime+ ts <- getCurrentTime return $! upd (newRecord eid msg ts lvl logger) -- | JSON-encode record data.
src/System/Log/Raven/Transport/Debug.hs view
@@ -14,7 +14,7 @@ -- | Log-like output with very few data shown. briefRecord :: SentrySettings -> SentryRecord -> IO ()-briefRecord _ rec = putStrLn $ concat [ srTimestamp rec, " "+briefRecord _ rec = putStrLn $ concat [ show $ srTimestamp rec, " " , show $ srLevel rec, " " , srLogger rec, ": " , srMessage rec
src/System/Log/Raven/Types.hs view
@@ -12,6 +12,7 @@ import Data.Aeson (ToJSON(toJSON), Value, object, (.=)) import qualified Data.HashMap.Strict as HM import qualified Data.Text as T+import Data.Time.Clock (UTCTime) -- * Service settings @@ -92,7 +93,7 @@ -- <https://docs.sentry.io/clientdev/attributes/> data SentryRecord = SentryRecord { srEventId :: !String , srMessage :: !String- , srTimestamp :: !String+ , srTimestamp :: !UTCTime , srLevel :: !SentryLevel , srLogger :: !String , srPlatform :: Maybe String@@ -107,7 +108,7 @@ } deriving (Show, Eq) -- | Initialize a record with all required fields filled in.-newRecord :: String -> String -> String -> SentryLevel -> String -> SentryRecord+newRecord :: String -> String -> UTCTime -> SentryLevel -> String -> SentryRecord newRecord eid m t lev logger = SentryRecord eid m t lev logger
test/Test.hs view
@@ -8,6 +8,7 @@ import Data.Aeson (object, (.=)) import Control.Concurrent.MVar (newEmptyMVar, putMVar, takeMVar) import Data.List (sort)+import Data.Time (UTCTime(..), Day(..)) import System.Log.Raven import qualified System.Log.Raven.Interfaces as SI@@ -15,6 +16,9 @@ import System.Log.Raven.Transport.Debug (dumpRecord, briefRecord, catchRecord) import System.Log.Raven.Transport.HttpConduit (sendRecord) +ts :: UTCTime+ts = UTCTime (ModifiedJulianDay 40587) 0+ main :: IO () main = hspec $ do describe "Types" $ do@@ -33,7 +37,7 @@ endpointURL ss `shouldBe` Just "http://example.com/sentry/api/project-id/store/" it "generates empty record" $ do- newRecord "" "" "" Debug "" `shouldBe` emptyRecord+ newRecord "" "" ts Debug "" `shouldBe` emptyRecord it "generates record template" $ do r <- strip `fmap` test@@ -219,28 +223,30 @@ } strip rec = rec { srEventId = ""- , srTimestamp = ""+ , srTimestamp = ts } test = record "test.logger" Debug "test record please ignore" id -emptyRecord = SentryRecord { srEventId = ""- , srMessage = ""- , srTimestamp = ""- , srLevel = Debug- , srLogger = ""- , srPlatform = Nothing- , srCulprit = Nothing- , srTags = HM.empty- , srServerName = Nothing- , srModules = HM.empty- , srExtra = HM.empty- , srInterfaces = HM.empty- }+emptyRecord = SentryRecord { srEventId = ""+ , srMessage = ""+ , srTimestamp = ts+ , srLevel = Debug+ , srLogger = ""+ , srPlatform = Nothing+ , srCulprit = Nothing+ , srTags = HM.empty+ , srServerName = Nothing+ , srModules = HM.empty+ , srExtra = HM.empty+ , srInterfaces = HM.empty+ , srRelease = Nothing+ , srEnvironment = Nothing+ } testRecord = emptyRecord { srMessage = "test record please ignore" , srLevel = Debug , srLogger = "test.logger" } -testRecordLBS = LBS.pack "{\"timestamp\":\"\",\"message\":\"test record please ignore\",\"event_id\":\"\",\"level\":\"debug\",\"logger\":\"test.logger\"}"+testRecordLBS = LBS.pack "{\"logger\":\"test.logger\",\"message\":\"test record please ignore\",\"event_id\":\"\",\"timestamp\":\"1970-01-01T00:00:00Z\",\"level\":\"debug\"}"