{-# LANGUAGE CPP #-}
{-# LANGUAGE UnicodeSyntax #-}
module System.Logger.Internal
( sshow
, formatIso8601
, formatIso8601Milli
, formatIso8601Micro
, timeSpecToUtc
) where
import Data.Monoid.Unicode
import Data.String
import Data.Time.Clock
import Data.Time.Clock.POSIX
import Data.Time.Format
import Numeric.Natural
import Prelude.Unicode
import System.Clock
sshow
∷ (Show a, IsString b)
⇒ a
→ b
sshow :: forall a b. (Show a, IsString b) => a -> b
sshow = forall a. IsString a => String -> a
fromString forall β γ α. (β -> γ) -> (α -> β) -> α -> γ
∘ forall a. Show a => a -> String
show
{-# INLINE sshow #-}
formatIso8601Micro
∷ IsString a
⇒ TimeSpec
→ a
formatIso8601Micro :: forall a. IsString a => TimeSpec -> a
formatIso8601Micro = forall a. IsString a => Natural -> TimeSpec -> a
formatIso8601 Natural
6
formatIso8601Milli
∷ IsString a
⇒ TimeSpec
→ a
formatIso8601Milli :: forall a. IsString a => TimeSpec -> a
formatIso8601Milli = forall a. IsString a => Natural -> TimeSpec -> a
formatIso8601 Natural
3
formatIso8601
∷ IsString a
⇒ Natural
→ TimeSpec
→ a
formatIso8601 :: forall a. IsString a => Natural -> TimeSpec -> a
formatIso8601 Natural
precision
= forall a. IsString a => String -> a
fromString
forall β γ α. (β -> γ) -> (α -> β) -> α -> γ
∘ (forall α. Monoid α => α -> α -> α
⊕ String
"Z")
forall β γ α. (β -> γ) -> (α -> β) -> α -> γ
∘ forall a. Int -> [a] -> [a]
take (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall a b. (a -> b) -> a -> b
$ Natural
20 forall a. Num a => a -> a -> a
+ Natural
precision)
forall β γ α. (β -> γ) -> (α -> β) -> α -> γ
∘ (forall α. Monoid α => α -> α -> α
⊕ forall a. Int -> a -> [a]
replicate (forall a b. (Integral a, Num b) => a -> b
fromIntegral Natural
precision) Char
'0')
forall β γ α. (β -> γ) -> (α -> β) -> α -> γ
∘ forall t. FormatTime t => TimeLocale -> String -> t -> String
formatTime TimeLocale
defaultTimeLocale (String
"%Y-%m-%dT%H:%M:%S%Q")
forall β γ α. (β -> γ) -> (α -> β) -> α -> γ
∘ TimeSpec -> UTCTime
timeSpecToUtc
timeSpecToUtc
∷ TimeSpec
→ UTCTime
timeSpecToUtc :: TimeSpec -> UTCTime
timeSpecToUtc (TimeSpec Int64
s Int64
ns) =
POSIXTime -> UTCTime
posixSecondsToUTCTime (forall a b. (Real a, Fractional b) => a -> b
realToFrac Int64
s forall a. Num a => a -> a -> a
+ forall a b. (Real a, Fractional b) => a -> b
realToFrac Int64
ns forall a. Num a => a -> a -> a
* POSIXTime
1e-9)