From a49750ffb2923d40e834cec77a9900b4167c2ea5 Mon Sep 17 00:00:00 2001
From: Yuanle Song <sylecn@gmail.com>
Date: Mon, 8 Apr 2024 19:50:30 +0800
Subject: [PATCH] v0.15.2 support log local time instead of just UTC time.

---
 src/System/Logger.hs          |  8 ++++++--
 src/System/Logger/Class.hs    |  2 +-
 src/System/Logger/Settings.hs | 15 ++++++++++-----
 tinylog.cabal                 |  2 +-
 4 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/src/System/Logger.hs b/src/System/Logger.hs
index fd3559c..8debf5c 100644
--- a/src/System/Logger.hs
+++ b/src/System/Logger.hs
@@ -40,6 +40,7 @@ module System.Logger
     , DateFormat (..)
     , Renderer
     , iso8601UTC
+    , iso8601
 
       -- * Core API
     , new
@@ -137,7 +138,10 @@ new s = liftIO $ do
     fn (Path p) = flip FL.newFileLoggerSet p
 
     mkGetDate Nothing  = return (return id)
-    mkGetDate (Just f) = return (msg . (display f) <$> getUnixTime)
+    mkGetDate (Just f) = do
+      t <- getUnixTime
+      bs <- display f t
+      return $ return $ msg bs
 
     mergeWith m e = Map.fromList (readNote "Invalid LOG_LEVEL_MAP" e) `Map.union` m
 
@@ -202,7 +206,7 @@ putMsg g l f = liftIO $ do
     let r = renderer  $ settings g
     let x = delimiter $ settings g
     let s = nameMsg   $ settings g
-    let df = fromMaybe iso8601UTC . format $ settings g
+    let df = fromMaybe iso8601 . format $ settings g
     let ll = logLevel $ settings g
     let m = render (r x df ll) (d . lmsg l . s . f)
     FL.pushLogStr (logger g) (FL.toLogStr m)
diff --git a/src/System/Logger/Class.hs b/src/System/Logger/Class.hs
index 7394c19..05709e4 100644
--- a/src/System/Logger/Class.hs
+++ b/src/System/Logger/Class.hs
@@ -30,6 +30,7 @@ module System.Logger.Class
 
     , L.DateFormat
     , L.iso8601UTC
+    , L.iso8601
 
     , L.Logger
     , L.new
@@ -67,4 +68,3 @@ info  = System.Logger.Class.log Info
 warn  = System.Logger.Class.log Warn
 err   = System.Logger.Class.log Error
 fatal = System.Logger.Class.log Fatal
-
diff --git a/src/System/Logger/Settings.hs b/src/System/Logger/Settings.hs
index 1b45877..f7702d6 100644
--- a/src/System/Logger/Settings.hs
+++ b/src/System/Logger/Settings.hs
@@ -37,6 +37,7 @@ module System.Logger.Settings
     , readEnvironment
     , setReadEnvironment
     , iso8601UTC
+    , iso8601
     ) where
 
 import Data.String
@@ -172,15 +173,19 @@ data Output
     deriving (Eq, Ord, Show)
 
 newtype DateFormat = DateFormat
-    { display :: UnixTime -> ByteString
+    { display :: UnixTime -> IO ByteString
     }
 
 instance IsString DateFormat where
-    fromString = DateFormat . formatUnixTimeGMT . pack
+    fromString = DateFormat . formatUnixTime . pack
 
--- | ISO 8601 date-time format.
+-- | ISO 8601 date-time format, local time.
+iso8601 :: DateFormat
+iso8601 = "%Y-%0m-%0dT%0H:%0M:%0S"
+
+-- | ISO 8601 date-time format, UTC time.
 iso8601UTC :: DateFormat
-iso8601UTC = "%Y-%0m-%0dT%0H:%0M:%0SZ"
+iso8601UTC = DateFormat $ return . formatUnixTimeGMT (pack "%Y-%0m-%0dT%0H:%0M:%0SZ")
 
 -- | Take a custom separator, date format, log level of the event, and render
 -- a list of log fields or messages into a builder.
@@ -209,7 +214,7 @@ defSettings = Settings
     Debug
     Map.empty
     StdOut
-    (Just iso8601UTC)
+    (Just iso8601)
     ", "
     defaultBufSize
     Nothing
diff --git a/tinylog.cabal b/tinylog.cabal
index e8c25fd..12cee84 100644
--- a/tinylog.cabal
+++ b/tinylog.cabal
@@ -1,5 +1,5 @@
 name:                 tinylog
-version:              0.15.1
+version:              0.15.2
 synopsis:             Simplistic logging using fast-logger.
 author:               Toralf Wittner
 maintainer:           Toralf Wittner <tw@dtex.org>
-- 
GitLab