Yesod记录器的日期/时间格式如何配置?

问题描述 投票:0回答:1

我有一个 Haskell

Yesod
网络服务器,它运行完美,并且日志记录完美1

postFailed :: String -> String -> Handler Value
postFailed errorMsg _filename = do
    $logInfoS "(Parser)" (Data.Text.pack errorMsg)
    returnJson (Error "FAILED" errorMsg _filename)

如何控制日期/时间格式?删除源代码 loc

@(main:Main ...)
等?

20/Oct/2024:13:12:39 +0000 [Info#(Parser)] Error[< ... omitted ... >] @(main:Main src/Main.hs:76:6)

当我查看docs时,我找不到任何相关内容。


1完整代码在这里

haskell logging formatting yesod
1个回答
0
投票

日志记录通常是通过

getLogger
实例的
Yesod
方法进行配置的,您可以覆盖该方法。默认情况下为
defaultMakeLogger
,又定义为

defaultMakeLogger :: IO Logger
defaultMakeLogger = do
    loggerSet' <- newStdoutLoggerSet defaultBufSize
    (getter, _) <- clockDateCacher
    return $! Logger loggerSet' getter

这里的

getter
只是一个
IO ByteString
,它提供了已格式化的当前日期时间,因此如果您想要不同的格式,您可以将其替换。

您可以使用 newTimeCache

 中的 
fast-logger
 来实现此目的,它具有正确的签名,并允许您以 
strftime
格式传递时间格式。或者您可以输入任何您喜欢的内容,只要它是一个
IO ByteString
即可返回您喜欢的当前时间格式。

© www.soinside.com 2019 - 2024. All rights reserved.